Dev 'n Life

Jan David Nose & Roberto Pando

Dev ‘n Life is a podcast by two friends who record their casual conversations about software development, technology, and personal growth. Follow along as Rob and JD discuss their ideas and views on technology and life as they maintain their long-distance friendship. read less

Rust, Bevy game engine, and Data-Oriented Design
Sep 16 2020
Rust, Bevy game engine, and Data-Oriented Design
SummaryRob is learning Rust, and feels like he's total beginner again. Rust's concept of ownership and its handling of strings are just different than any other language he has worked with, but JD ensures him that this is how everyone feels when starting with Rust...JD spent the last week working on their game, starting with rewriting everything. He explored using a game engine instead of React for the visualization, and really likes the approach. He set up the new game engine Bevy, and hacked around to integrate it with a gRPC API. One problem he didn't anticipate is that querying state in the game can only happen during the game's core loop. Running at 60Hz, this means any API request takes at least 16ms. 😫 This will require some research in the future...Diving deeper and deeper into game design and development, JD is amazed and inspired by the experience of the community. Looking specifically at user experience and Data-Oriented Design. For anyone who's interested in this, here are a few talks JD watched this week:- Understanding Data-Oriented Design for Entity-Component-Systems (Unity at GDC '19)- Building a Data-Oriented Future - Mike ActonAnd here are the two blog posts mentioned in the episode:- Introducing Bevy- Specs and Legion, two very different approaches to ECSSorry for the audio quality in this episode. We had a small technical glitch and lost one of the high-quality recordings.Stay in touchWebsite: https://www.devnlife.comJan David: https://twitter.com/0x6a64Rob: https://twitter.com/RobPando
Games, Prototypes, and gRPC
Aug 19 2020
Games, Prototypes, and gRPC
SummaryRob is back after moving to Austin, Texas! And JD survived a heatwave in Europe that made it very tough to be productive. Nonetheless, JD managed to think more about the game he wants to build. And he set up a prototype with some technologies he is interested in exploring. To get Rob up to speed, he introduces the game Screeps, which is an MMO strategy game for programmers and an inspiration. From there, the discussion turns into a general reflection on video games, and what will be important for their game.JD then shares his vision for the game's technical architecture, consisting of a game engine, the player's code, and a UI at the minimum. For the game engine, JD is thinking about writing it in Rust. It's fast, has good memory management, but it is still young and the comparatively small ecosystem might make things more complicated. For the UI, JD wants to go with React since that runs almost anywhere. And finally for the API between the engine, the UI, and the player's code, JD was considering a REST interface, GraphQL, or gRPC. JD really likes the features of gRPC, and intents to use it in the prototype.Feeling a little bit overwhelmed by the complexity of designing a game, the two discuss a good strategy to get started with a very small feature. One idea is to generate events, and have the player react to them. This could be easily implemented without the need for a feature rich UI or advanced rules in the backend.Stay in touchWebsite: https://www.devnlife.comJan David: https://twitter.com/0x6a64Rob: https://twitter.com/RobPando
Basecamp, Rails, and Password Managers
Jul 17 2020
Basecamp, Rails, and Password Managers
SummaryRob and JD are back after a week without recording. Rob has been giving hey.com a spin as his email solution, and is enjoying the experience so far. JD is still contemplating how to optimize his own setup, now thinking of adding another email host in the middle as a backup. Other than that, JD has been a bit in a slump. He started a small side project, trying out Basecamp and Shape Up in the process, which has been a lot of fun. Especially the idea behind hill charts resonated with him, and reflected his own experience working on the project.The project JD started working on is a Rails app that uses OAuth for sign in. He's been working through the various different edge cases that this flow comes with, enjoying the challenge and working with Ruby again. Now that the authentication part is done, he is wondering what to do next, since there are too many different paths from which to choose.The two end the episode discussing 1Password and its business model. Rob doesn't want to be locked into a subscription service, and doesn't want to upload his passwords to the cloud. JD on the other hand gladly pays a monthly fee to know his password manager is improved and secure, and values the integration of 1Password with all modern operating systems. Rob is now looking into Keepass, after briefly considering building his own thing.PS: Sorry for the audio quality in this episode. Seems we both accidentally used the builtin microphone to record instead of our external ones.Stay in touchWebsite: https://www.devnlife.comJan David: https://twitter.com/0x6a64Rob: https://twitter.com/RobPando
Habits, Projects, Business
Jun 10 2020
Habits, Projects, Business
SummaryWe are back to our normal recording schedule.  Rob found a new intermediate programming course about Elixir that he started this weekend. It's by The Pragmatic Studio, and it slowly builds up a web framework from scratch. Rob is super excited about this, as he expects to learn a lot from the course.JD has been thinking about the last episode, and Rob's and his differing opinions on Rails and whether it does too much. Exploring Domain-Driven Design, he wonders how to apply the lessons he has learnt to Rails. Another thing on his mind has been the question how many projects one can do in one lifetime, raising the question if he is working on something important right now. He is reflecting on their goals to put something valuable into the world, and the reason they started the podcast in the first place. And finally, he saw the announcement of a talk that combines side projects with the science of habit formation. It also reminded him of Basecamp's Shape Up methodology, which is focused on delivering a working piece of software as quickly as possible. This made him think that there must be better ways to approach his projects than what he is doing now. All three thoughts combined raised the big question for him what to focus his attention on next. And since Rob and JD started the podcast to explore entrepreneurship, the two start to discuss what that means for their projects as well. Rob has been inspired by the Rework episode The Bookshop Around the Corner about a socially responsible business, and is thinking about how a business might help diversify his income as a freelancer.The two end the episode in agreement that there is a lot to think about, and that they'll have to continue the discussion in the next episode.Stay in touchWebsite: https://www.devnlife.comJan David: https://twitter.com/0x6a64Rob: https://twitter.com/RobPando
Aggregate Roots, Entities, and Deliberate Practice
Jun 7 2020
Aggregate Roots, Entities, and Deliberate Practice
SummaryRob plans some activities again in a world that slowly opens up, and shares his frustrating experience booking tickets for Universal Studios. JD is thinking about his summer vacation, and has decided to take a full three weeks off to recharge from the stress. It'll probably be a motorcycle vacation in Germany. The two chat about the cultural differences when it comes to holidays, especially between the US and Sweden.Then JD gives an update on his project, reflects on his approach, and describes how he shifted from a "getting things done" to a growth mindset to enjoy the work more. This has helped push him forward exploring DDD, which the two discuss in depth. With the lessons he learnt, JD rewrote the initial version of his domain model and is making much more progress than before. One insight in particular helped redesign the domain:Aggregates turned out to be one of the most difficult patterns to apply. There was an over-emphasis on access rules within aggregates (nobody can hold a reference to things within an aggregate apart from the aggregate root). A much more useful view at aggregates is to look at them as consistency boundaries for transactions, distributions and concurrency.Progress is still slow though, which prompts JD to reflect on his expectations on software development and open source. Do other people really write side projects in one weekend? Were popular projects open source projects really created in a day? Or is it a sign of practice and experience? And what role play frameworks in this? Do they support the projects, or do they hide too much complexity for learning? JD argues that he's been too focused on executing, and has not payed enough attention to deliberate practice.Stay in touchWebsite: https://www.devnlife.comJan David: https://twitter.com/0x6a64Rob: https://twitter.com/RobPando