Hey, I'm Ryland Goldstein a 24 y/o dev based in the bay.
TL;DR
- Built a high performance C game engine optimized for realtime terrain gen
- Went to a top 5 CS school and was poached by my professor (Intel fellow)
- 4 months into first job, put in charge of a technical team implementing distributed ML
- 8 months after that, leading 3 teams (classic ML, deep learning and AST/DAG optimizer)
- Left to join pre-funding startup as first employee, led by two highly technical ex-talpiot engineers.
- 2 years ago, we got funded, became lead architect of scale out compute product.
- 2 months ago, came up with new product for the company, now lead product effort
- Obsessed with my dog
I taught myself C/x86 when I was 15-16, so I could build cheats for WoW. I realized with those skills I could also build games, and at age 17 finished my first C game engine. This made me realize that I like game engines even more than games.
I started my bachelors in high school, so at 18 I started University of Washington as a Junior in CS/CE. I had been spending ~10 hours a day coding for 2-3 years, which made school pretty easy. In my senior year, two of my professors sponsored my engine as research, allowing me to explore more advanced, academic topics.. Here's a video I made about my engine for the "research board" (big wigs who evaluate academic research).
UW was awful. Due to incredible negligence, I had not ONE but TWO of my teachers removed, mid-quarter. Although I was only one Spanish credit short of my degree, I decided not to finish.
One of my research profs wanted me at Google (he was a Googler), the other wanted me to join his Israeli startup. I considered going to Google, but the CEO of the startup was already a billionaire. One of my classmates, Robert, had also been recruited. We knew the startup was building a scale-out compute product, but it was stealth, so we had limited details.
After joining, I was welcomed on as a machine-learning engineer. Machine learning? Never heard of it. My professor was a bit of a schemer, and had told everyone we were ML experts. Never adverse to a challenge, I started learning about statistical analysis and machine learning as fast as I could. As I developed my ML skills, the situation with my professor... degraded. This resulted in him leaving ~4 months after hiring us. We had a classical ML team of 6 working on the UW campus, and now we had no boss. I convinced Robert to pitch ourselves as the replacement (him ops and me tech mngmt). The higher ups were crazy enough to agree, and Rob and I took over the Seattle office only a few months after joining.
Over the next 6 months I became quite knowledgable about ML. This resulted in me being asked to lead 2 more teams, one deep learning (neural nets) team and the other building a "compiler" (actually more like Volcano or Cascade DB optimizers). Over the next year, my team and I architected and implemented many high perf scale-out ML algorithms. Eventually, internal politics became problematic. The most senior developer lead architect left.
I had become personal friends with the senior dev and lead architect, so after leaving they stayed in touch. A few months later, they reached out. They were starting something new, had no funding (so clearly couldn't offer me a job). They said, if I ever wanted to work with them it was always an option.
It was only two weeks later when I decided to quit, picked up the phone and asked when I could start. I knew they couldn't pay me, but I decided it was the right move. Unfortunately, they were based in Israel, and until we were funded there was no way for them to work in the states. We agreed that I would live in Israel, for the initial months of bootstrapping. My girlfriend and my parents were very supportive, so at the beginning of 2017 I moved to Israel for ~3 months. I had previously visited 3 times (the first company), so it wasn't completely new, but it was a very very very rough 3 months for me. Not seeing your loved ones sucks.
Halfway through my stay, we secured funding, ~8 million dollars from some top VC's. We started building a company. During this time, I served as lead architect building the core backend of our FaaS (function as a service).
We hired an incredible team (the smartest people you could hope to work with). As we gained customers, I switched roles and became Head of Solutions Architecture. This is just a fancy way of saying I handle the customers. Most of my time was spent helping customers re-architect their existing cloud (or on-prem) apps to work with our system. I also had to move from Seattle to the bay (and away from my family).
Fast forward to a few months ago, and we needed to broaden our market. We had built a very impressive system (destroys AWS Lambda in perf, no cold starts), but it just wasn't enough. As we were considering our options, I pushed a new direction for the company. The push was successful, and as of a month ago, the company is pursuing that direction (I wrote a post about that process here). During that period, I realized that I was very fond of product work, so I took leadership of the new product and process. We were also lucky enough to hire Amir Shevat, who until last week (seriously last friday) served as VP Product for Amazon/Twitch.
I know that was long, so now it's your turn. Feel free to ask about ML, games, the cloud, programming, college, building my career or anything else!
I also started a Discord recently, to help people in the areas I'm experienced in, or just talk. Here's a link, https://discord.gg/6NjDcPg
Top comments (28)
Very impressive. Is it necessary to know as many design patterns if you need to creade a new software or are there just a handfull of patterns that are actually needed in the area of software engeneering ?
Do you learn new stuff by reading books/docs about it or do you just dive in with a new project and then you see what you need ?
Greetings from Germany
Honestly, great questions.
Learning design patterns is a bit like learning phrases in a language. Yes you now know how to say “can I go to the bathroom?” but it doesn’t mean you can say “the bathroom is on fire”.
One of the best books you will ever read is Inside the Machine. If you can understand how a computer actually works, the way you write software will change. You will understand how your code affects the CPU, cache, memory etc. I really believe in learning the lowest granularity concepts you can handle. If you learn enough, you don’t need to focus as much on patterns and instead on recognizing the problems they attempt to solve. Also, I want to be honest with you. Most of the time, none of that crap matters. Minecraft had one of the worst codebases I’ve seen (not as bad as old terraria). It still made the guy 2 billion dollars.
I’ve never really liked reading books to learn software stuff (with the above book as a limited exception). Nowadays I know enough building blocks that I can usually just dive into stuff and work things out as they happen. I definitely use docs.
In fact, I avoid memorizing most random stuff for languages I know, just google it. Don’t clutter your brain with the specific syntax of some JS API you’ll use 1 time a month. If you use it every day, commit it to memory.
Greetings from Sunnyvale, thanks for the great questions.
I don't think we should share illegal copies of (e)books here. If you want to do justice to the author, please share a link where people can pay for his work.
For example, Amazon: amazon.com/Inside-Machine-Introduc...
Why did you respond to my AMA when this is seems to be about my other post? Also, as I wrote in my article, the book is open source and partially available on Github.
Update: Also I reread and realized that I got confused earlier about the posts and thought you were replying to my very recent article (you can see why probably lol). So sorry about that.
Sorry about that. I haven't read your other post. I was responding to your comment in which you link to that PDF. So my comment is posted at the right place.
And page 6 of that PDF clearly states:
You write here, "the book is literally open source and partially available on github." Partially? So not all? I guess you should link to the GitHub repo than. Even when the source is published on GitHub, the final product (this (e)book) can still contain copyright notices and have different licenses assigned, as page 6 clearly states.
*edit,
Checking the repo github.com/collectiveidea/inside_t... it is also clear that the author of this book started a second edition. That second edition is not finished, but indeed released under the license CC BY-NC-SA 4.0. That does however not automatically mean that the first edition (your pdf) is also being republished under that license. So you do violate copyright here. And are linking to an illegal share of that book.
The second edition can be read here: inside-the-machine.com/ and contains currently 2 chapters. Where the first edition contains 12 chapters. The second edition is not finished and had its last contribution 4 years ago.
Considering that Jon (author of Inside the Machine) is promoting my tweet about the post, I doubt there is an issue. In fact, he said that it was the best thing he’d see on in a long time.
Thanks for genuine concern, it’s nice that someone is watching out for that stuff.
twitter.com/jonst0kes/status/11460...
Also I reread and realized that I got confused earlier about the posts and thought you were replying to my very recent article (you can see why probably lol). So sorry about that.
Thank you for your quick and detailed response. And the source of the book is great, awesome. It looks like its that old but interesting thoughts about the processes. I guess a quick reading with a speedreader software wont do it. I also need to process the thought.
If I wouldn't know better (I still don't know :D), I'd say you programmed/trained your personal AI to be able answering all the questions here in a very detailed manner, right ?
Have a greate day !
What's it like building a game engine? Do you have any game devs (or game dev companies) that you follow and think are doing particularly cool stuff?
Building game engines has been one of the most rewarding experiences in my life. You get part of the thrill of playing games, but you feel so much more connected to the outcome. I also think that game engines are unique, because they require you to cover such a broad array of topics. My math, and physics skills improved tremendously. It taught me how to do proper architecture design, and showed me the danger of feature creep, and other pitfalls. Obviously it made me a very strong developer, mostly because it forced me to be aware of performance. There are just so many topics you learn about with a game engine, programming, parallelism, performance, design patterns, math, physics, art and much more.
I do follow Jon Carmack and the guy who makes "binding of isaac" (probably top 3 favorite game of mine). I think indie is where it's at these days, the big studios have really let us down. I also like everything going on with Godot, and have built a few games with it recently. Grinding Gear Games is also pretty decent, although they were recently acquired by Tenecent.
Nice! Jon Carmack is great! I still have yet to read Masters of Doom but it's on my list!
I actually got to interview John Romero ages ago... and I never published it. 😓I should've... I was trying to get it out there prior to him speaking at a show, then I got buried in other work and ended up discarding it. But, he was definitely a fun person to talk to. The early id team sound very much like indie devs. I remember I dug their ten development commandments.
The original ID team was honestly amazing, would have loved to work with them.
You can still publish that John Romero interview. I would read it.
The ten dev commandments only mostly held up with time. A few questionable items these days.
Love your humour! Can I really ask you anything?
I have some questions about cloud hosting.
I'm new here so please be nice, I don't know much about coding sorry.
My background was hardware.
Hey, of course you can. Feel free to ask away,
I'm currently with wpEngine, been contacted by Google as part of my G-suite they are encouraging me to move all my business to the cloud platform. I'm not too experienced so I love having wpEngine with their live chat. Do you think I'd get much support if I moved my website to the cloud or would I be on my own and have to hire developers if I have problems or need to ask a question? What's your opinion. My website is my only source of income for the past 15 years pretty much so it's an important decision to make and a half hour chat with a cloud engineer from G didn't help as they are biased I guess. Thanks for your time I appreciate it.
Pretty tough choice.
The easy part of the answer is my opinion on Google cloud. I think it’s a really decent offering and the support for the actual cloud service is top notch. In fact, snapchat basically made a 2 billion dollar deal with google cloud just for the support. They did this because Google SREs(sort of like dev ops) are full fledged Google engineers. They aren’t contract employees or part timers, they are as qualified as anyone else working at Google.
Now here’s the thing. Unless cost of wpengine is an issue, I think they already run on top of Google cloud or AWS. The only change would be the support. And since it seems like wpengine makes you happy in that area, I would just stick with them.
Hope I helped!
Thanks yes that's pretty much what I thought. Thanks for clearing that up for me.
I wanna ask you how many megs your profile picture is? Is loading like dial up on my fast wifi lol. Or is that a gif to imitate slow loading?
It's a gif. It was a huge deal on twitter the other day
That's hilarious!
Glad you think so.
Super hilarious, you got me too with that one had to briefly stop streaming before figuring it out.
I have a product idea. But it's core part contains a graphics engine (or game engine). Since I am just a coder (who hardly writes python but does lots of JS) do you think I can pull the MVP myself.? Where should I start when it comes to graphics engine?
Without knowing the specifics, there's less advice I can give.
Even with the little information I do have, I feel comfortable answering yes to this. There are so many free, open source options in the software world. Unless you want to innovate the graphics engine itself, it should be pretty easy to find something that doesn't require much understanding of graphics.
Again, hard to answer without knowing more. If you want to keep using JS, there is the threejs framework, which has a moderate barrier of entry. If you want something less technical phaser is also great. I wrote a moderately complex browser based engine in threejs for a talk I gave at Serverless conf last year. That code is available here if you wanted a reference.
As a product guy, I would advise you to really make sure you understand the "problem" your product solves. ALL great products solve a problem. What is the need from users that is being satisfied by your concept?
Remember, as long as it works, users won't care if you built your own graphics engine or used something off the shelf. Focus spending your time on the things that will bring more value to your users.
I hope that answered your question, if not let me know.
Haha hey, cheats for WoW 🙃
Do you have any advice for college students looking to build connections?
Someone who knows the addiction.
Focus on a project that you're passionate about and search for others that share that interest, either through meetups, forums or your school. I never have found building connections for the sake of building connections a worthy cause. Instead, develop expertise in an area you're passionate about, and people will notice. If you want a more practical answer, let me know.
Bonus question: what's your dog's name?
Thanks for asking. Her name is Audrey and she’s a 1 year old border collie. I really really thinks she’s awesome.
She also has her own blog