13 years in the industry; Mostly in startups and R&D departments. Spent the last 3 working on my own projects / research following an acquisition. In that time, I authored the Serpent.AI framework, released a handful of Python packages and worked on a few curios (e.g. custom style transfer implementations, auto-painting application with NumPy and OpenCL). I'm a pretty collected, friendly person; Competent and professional. I prefer working in smaller teams / companies (more hats to wear, closer to product) with insightful and good-natured colleagues.
12 years in the industry; Mostly in startups and R&D departments. Spent the last 2 working on my own projects / research following an acquisition. In that time, I authored the Serpent.AI framework (streamed it on Twitch), released a handful of Python packages and worked on a few curios (e.g. custom style transfer implementations, auto-painting application with NumPy and OpenCL).
I was planning to return to the working world in the later half of 2020 but with the COVID 19 situation, I figure it's wise to start considering it now. I'm a pretty collected, friendly person; Competent and professional. I prefer working in smaller teams / companies (more hats to wear, closer to product) with insightful and good-natured colleagues. I'm alright with freelance too if you don't have payroll in Canada.
12 years in the industry; Mostly in startups and R&D departments. Spent the last 2 working on my own projects / research following an acquisition. In that time, I authored the Serpent.AI framework (streamed it on Twitch), released a handful of Python packages and worked on a few curios (e.g. custom style transfer implementations, auto-painting application with NumPy and OpenCL).
I was planning to return to the working world in the later half of 2020 but with the COVID 19 situation, I figure it's wise to start considering it now. I'm a pretty collected, friendly person; Competent and professional. I prefer working in smaller teams / companies (more hats to wear, closer to product) with insightful and good-natured colleagues. I'm alright with freelance too if you don't have payroll in Canada.
12 years in the industry; Mostly in startups and R&D departments. Spent the last 2 working on my own projects / research following an acquisition. In that time, I authored the Serpent.AI framework (streamed it on Twitch), released a handful of Python packages and worked on a few curios (e.g. custom style transfer implementations, auto-painting application with NumPy and OpenCL).
I was planning to return to the working world in the later half of 2020 but with the COVID 19 situation, I figure it's wise to start considering it now. I'm a pretty collected, friendly person; Competent and professional. I prefer working in smaller teams / companies (more hats to wear, closer to product) with insightful and good-natured colleagues. I'm alright with freelance too if you don't have payroll in Canada.
Programming has always been a second-class citizen on Twitch and has quite the fabled history. It started with people uniting under specific games when nothing other than gaming was allowed. A "Game Programming" category was eventually added as a special exception. Then Twitch launched Creative as the first non-gaming category. There was initial hype, Game Programming slowly died as a result and Programming was eventually made a sub-community of Creative (i.e. not visible in the directory). Then IRL launched, proceeding to lobotomize Creative and therefore what was left of Programming. When IRL got out of hand, Twitch broke it down in multiple categories and for a glorious 14ish days, there was a full-blown Programming category visible in the directory. It was too good to be true though and the recently launched and anemic Science & Technology (as part of the IRL break-up) needed to be saved from the embarrassment it was so they deleted Programming and told people to stream there instead. We are back to people thinking there is no programming content on Twitch.
Sad because it's a solid category with a lot of good content that no one can find. Never understood Twitch's stubbornness in not exploring it as decent vertical to develop.
Another resource worth checking out even if the formatting is a little jarring is https://github.com/bnb/awesome-developer-streams. There is a lot of overlap but it lists what people do on their channels.
I have done it for about 1.5 years straight, 24+ hours a week. Currently on an extended break to recharge my batteries but I'm definitely going back. It's slightly addictive and you come to miss it. The best part is you eventually end up knowing the other programming streamers which builds a sense of community.
In my personal experience, the productivity hit is overstated. It's absolutely harder to focus because of chat and the discussions that come with it, yes, but at the same time you have a camera pointed at your face and your screen is shown to the world. Whatever you normally do to distract yourself and procrastinate... I can guarantee you don't.
You also build a resistance to interruptions over time, which is an amazing skill for a programmer to have. I didn't believe it to be possible, but it eventually became so easy to pause what I was doing, interact with chat for a few minutes and instantly resume where I left off after.
To go even further, it's a great way to put in consistent work and keep motivation up for large, long-term projects. I have built the entirety of the Serpent.AI Framework (https://github.com/SerpentAI/SerpentAI) while live on my Twitch channel and I'm not sure I would have ever shipped it otherwise. The interactive nature of live streaming can give you that nice push on days you don't quite feel like it.
Streaming programming is not for everyone but I still recommend to give it a try. The experience is hard to put into words. I've had a blast and got to know great people.
How do you get into it? I think it'd be neat to try, but have no idea how I'd get going.
The Twitch "getting started" docs are surprisingly anemic. (Do they even have a growth team? This seems like table stakes.)
For someone who hasn't ever watched Twitch, and really just wants to focus on coding in a streaming context, do you have any "start looking here" suggestions?
Start messing around in OBS (https://obsproject.com) and get as comfortable as you can using it. You can compose scenes, transition between them, set up your audio and video encoding and preview everything without streaming. You can make local recordings test things like volume levels and audio sync. It's fantastic software and it's how you will operate your stream.
For programming, things are as simple as they come: Have a main scene that does display capture and perhaps overlay a camera. You can add more bells and whistles if you want; the tools are pretty intuitive. I recommend also making scenes for "Starting Soon", "BRB" and "Stream Over". Having a browser in guest/incognito mode is a good idea. Be mindful of stuff like API keys, secrets, passwords and personal information.
Once you are ready to make the leap, you can link your Twitch account to OBS and when you press "Start Streaming" you'll be live shortly on your channel.
Before you do though, you'll want to spend a little time in your Twitch dashboard to set up stuff like titles, categories, tags etc.
There is a lot more to it that you'll figure out along the line. Live streaming is an iterative process and a skill / hobby that you perfect over time. Have fun!
Excellent, thank you! Her setup looks impressive … I guess I was looking for an MVP of getting going: "You have a Macbook with a built-in webcam? You have a code editor? Great; you're all set. Now do this." This video — https://www.youtube.com/watch?v=Yh5LI_d_JKM — seems like a solid intro to streaming with OBS. Will give it a shot, and will poke around the belly.io streams and see who might be good to connect with.
That also looks like a cool project! I've made a bot to play a game called Gems of War. I've used some GUI windows thing to program the AI but it was terribly limiting and slow. I was going to start again using python and opencv from scratch but I was kinda sad I needed to code a lot of plumbing code such as finding the screen, and then finding sprites and things like that. Your project seems to do that and would save me a lot of hassle. I may try again someday.
Check out https://www.twitch.tv/instafluff ! He does livecoding, but also tends to get distracted by chat a lot and goes down random internet rabbitholes. All in all, he's a lot of fun to watch.
My goal with Serpent.AI is to lower the barriers to entry when it comes to using games as sandboxes for code experiments. It unlocks your entire existing game library (Steam, DRM-Free etc.) to be used as potential game agent environments and it does so natively! No Docker containers, No VNC. It is simple enough for beginners & hobbyists to dabble in, but also powerful enough to drive serious machine learning and AI research. The framework provides structure and conventions so you can focus on your experiment exclusively. It also doesn't try to dictate how you solve your problems. Your game agent is your canvas!
How does Serpent.AI help with scraping game state? In my ignorance of the state of research here I would think that's the most common barrier to entry.
Thank you so much. OpenAI gym and Universe have been, to say it lightly, a pain to use on Windows (generally through hacks like the Ubuntu subsystem, etc.). And let's be honest most video games are Windows native.
My goal with Serpent.AI is to lower the barriers to entry when it comes to using games as sandboxes for code experiments. It unlocks your entire existing game library (Steam, DRM-Free etc.) to be used as potential game agent environments and it does so natively! No Docker containers, No VNC. It is simple enough for beginners & hobbyists to dabble in, but also powerful enough to drive serious machine learning and AI research. The framework provides structure and conventions so you can focus on your experiment exclusively. It also doesn't try to dictate how you solve your problems. Your game agent is your canvas!
This has been my main side-project / hobby for the last few months. I am building a framework to facilitate the creation of agents that can interact with games.
You can think of it as a minimal, one-man OpenAI Universe. The main difference is that you can set it up to interact with native games you own. No VM + VNC setup or depending on available games/environments like Universe! It takes less than 10 minutes to write a plugin to add support for any Steam game.
The framework provides 2 major features: First, it sets up the game agent loop for you. Frames are captured and fed to your agent, you process them the way you want (can be anything from pure computer vision to reinforcement learning) and are able to send actions back to the game. Second, it ships with multiple blackbox implementations of algorithms that are compatible with the architecture of the framework. This second part is a total WIP.
On stream right now, I set up an experiment in The Binding of Isaac: Rebirth to see if we can learn to defeat bosses in game using the DQN family of algorithms. The current version uses 2 DDQNs each using Prioritized Experience Replay. 1 controls the movement and the other is in charge of the shooting. This is already v11 so there are a lot of iterations and chat has been great for discussing possible improvements.
Thank you so much for sharing this! I'm working on something similar right now (a framework to build game agents using computer vision tools) and I just went from capturing at 10-15fps with ImageGrabber, to 15-25fps with FFMpeg and finally 70-80 fps with this technique. Insane!
Really nice and can see why you needed the performance for this project. Funny that you mention Super Hexagon because it's the game I'm using for my POCs!
Remote: Yes, open to on-site as offices reopen
Willing to relocate: No
Technologies: Python, Web (Backend & Frontend), Data (ETL, Processing, Search, Dashboards), Image Processing, Computer Vision, Machine Learning, Reinforcement Learning, GUI (Qt)
Résumé/CV: https://github.com/SerpentAI
Email: On my Github page
13 years in the industry; Mostly in startups and R&D departments. Spent the last 3 working on my own projects / research following an acquisition. In that time, I authored the Serpent.AI framework, released a handful of Python packages and worked on a few curios (e.g. custom style transfer implementations, auto-painting application with NumPy and OpenCL). I'm a pretty collected, friendly person; Competent and professional. I prefer working in smaller teams / companies (more hats to wear, closer to product) with insightful and good-natured colleagues.