THE OMNI SHOW

Connect with the amazing community surrounding the Omni Group’s award-winning products.

RSS
127
Nov. 27, 2023, noon
How Carson Whitsett Uses OmniGraffle

In this episode of The Omni Show, we chat with Carson Whitsett, a multifaceted software developer and the brain behind MacBrickout, the famous ball and paddle game. Carson, who runs Ditty Labs, shares from his vast experience in software and firmware programming plus hardware engineering, including work on medical devices, printers, machine vision technology and mobile app development. He recounts his journey from fixing electronics at a music store to becoming an expert in iOS app development, contributing to notable projects like the Dexcom ONE app and the GoPro subscription service.

Show Notes:

Carson discusses how OmniGraffle has proved instrumental in his workflow, particularly in organizing app development processes, and shares his views on the changing landscape of software development in the age of AI.

Some other people, places, and things mentioned in this episode:

Transcript:

Andrew J. Mason You're listening to The Omni Show, where we connect with the amazing community surrounding The Omni Group's award-winning products. My name is Andrew J. Mason, and today we learn how Carson Whitset uses OmniGraffle. Welcome, everybody, to this episode of The Omni Show. My name is Andrew J. Mason. Today, we have Carson Whitset. Carson's created the Mac Brickout, Ball and Paddle game. He runs an independent software development company, Ditty Labs, where they take on all sorts of programming projects with extensive hardware and firmware knowledge to boot. We'll get into that. Today, we're hanging out learning how he uses OmniGraftle. Carson, thank you for joining us today.

Carson Whitsett Hey, glad to be here.

Andrew J. Mason Well, Carson, before we get into OmniGraftle, I'd love it if you'd shared just a couple of paragraphs about the work you've been involved with so far. You've had some really impressive client work, and I say really impressive. This is just personal bias here. I went to school for computer science and did not make it through the assembly language programming. I just could not hang with it. Anybody that programs firmware, my gosh, you have my respect. I'd love to hear more about the clients that you've gotten to work with and some of the projects you've worked on.

Carson Whitsett Yeah, I've done a lot of firmware programming, software. In the early to mid-2,000s, I was doing hardware and firmware engineering, and I've worked on several different medical devices. I built printers, worked on some machine vision stuff. I also built a touchscreen voting machine. I did that for about 10 years. Recently doing the app work, I worked with Dexcom to build the Dexcom One app. We were a team of about four engineers that built that app from scratch and took it all the way to deployment to the App Store. I also worked with GoPro to build the GoPro+ subscription service, which is still in use today. I worked with a company called Neuroverse to make a wearable brain EEG device. I did the firmware on that device as well as the iOS app.

Andrew J. Mason Yeah, so talk to me about the game programming aspect of it, because I grew up in the '80s, so every kid that got a Nintendo for Christmas thought that one day they were going to grow up and either be a Nintendo programmer or Nintendo tester or a Lego. Very few, I think, actually ended up having that as a career path or at least as a deep hobby path. Talk to me more about how did you realize this is the direction I think I want to take things?

Carson Whitsett Well, as a child, I grew up in the 1970s, so I was there for really the dawn of the video game age. There was the Magna box odyssey, there was the Atari 2600, and television, clicovision, all that stuff was new. You'd go over to a friend's house and they'd have one thing and you'd have another thing and you would just go play games and everything was just really funand then the arcades, that was the classic centipede, Joust, Tron, you name it. There were just lots of new, innovative ideas that had never been seen before. It was very intriguing, I guess. Of course, I was too young to program these things, but I was very interested in them, and I was very interested in how things worked. I ended up, as a child, taking things apart a lot and just seeing what's inside, what makes these things tick. I think at a very young age, there was this engineer, technical thing going on that I needed to explore.

Andrew J. Mason Man, I know that every person listening, let's say, under the age of 30, probably remembers the hot market that was trading video games out or Shareware. You've got the floppies, you've got the Nintendo or Lego cartridges, and there's only a limited number, so the person that actually has the cartridge is the person that gets to play the game. The pattern recognition, too. My gosh, I remember in certain circles, I actually got some street crowd from being able to make it to level 30 in Galaga in a single quarter, just hanging out at the arcade cabinet for such a long time. Yeah, come to think of it, I'm not sure if I should be proud of that or not, but still, there's the pattern recognition aspect of it.

Carson Whitsett They recognized that people were developing patterns, so they would come out with new RAM chips to change it up a bit so that the patterns wouldn't work anymore.

Andrew J. Mason Man, I did not know that. Okay, so that's slightly evil, but also a really great idea by the company. Let's shift gears. Talk to me about the Omni Group. The Omni Group, as a company, has been around for quite some time in terms of software. When did you first have a memory of interacting with the company or with a specific software? Talk to me more about that experience for you.

Carson Whitsett Yeah. After school, I got a job doing electronic repair at a music store. I had no idea what I was doing, but I learned electronics at ITT Technical Institute, so I figured this was my path. I was there for about five years. In the beginning, I fumbled my way through, but at the end, I had logged over 5,000 component-level electronic repairs. I was pretty good at fixing stuff. I moved on from that and eventually got a job in the engineering sector doing hardware, firmware engineering. At the time, it was all Windows-based. I felt the need to plan out my design ahead of time. I was already getting into doing flows and just diagramming stuff out. What tool did I use? It was Vizio. I used a tool called Vizio on Windows. Fast forward to when I'm doing iOS app development or game development on the Mac, and I was searching for an equivalent tool that I could use, and OmniGraffle popped up. I immediately fell in love. This is what I need to do my work. That's how I got introduced to it.

Andrew J. Mason That's so great. Let me pause on OmniGraffle for just a minute and do a quick detour into Mac breakout itself because I just realized that not everybody knows the game, but not everybody understands the universe and the rules around it. If you don't mind giving us just a little bit of color and context around what the game is all about in that universe.

Carson Whitsett Okay, so Mac Breakout. Back in the '70s, Atari came out with Breakout, and it was awesome on the Atari 2600. Then they followed it up with Super Breakout. I fell in love with those games. Then in the arcade, Tato came out with Arcanoid, which was Breakout on steroids. It had all these creatures that spun down and got in the way of the ball. I was just enamored when I saw that. That's where all my quarters went in the arcade back in the day. I decided in the early 90s that I wanted to teach myself programming. I bought a Macintosh 2. Ci3, which was the hottest computer at the time, and proceeded to learn the C programming language. I thought ball and paddle breakout-type game would be a fun challenge to try and learn, so I started coding it up. I worked on it for about a year maybe, and eventually released it as Shareware. It was real simple. It was just a bunch of bricks and a ball that bounced around and different levels, and that was it. Many years later, maybe early late 90s, I rewrote MacBrick. I learned C++ and OpenGL was available.

Carson Whitsett Instead of doing all the graphics by myself with the processor, painting every single pixel painstakingly, I was able to use OpenGL and free up some of that time, which means I was able to do more with the game. Now I added bubbles that come down, like in Arcanoid, where there were the geometric shapes that came down. I added a little creature at the bottom in the sand who looks like a roly-poly. He'll walk back and forth in the sand. Sometimes if you drop the ball below the paddle and lose the ball, that little creature there, he's called an umfeet, the ball will bounce off his shell and he'll save your ball. You can hit him with different color balls and make him dig down in the sand and find stuff. There's capsules that fall down that give you different powers. There's a lot of stuff going on in MacBrick. Hidden fruits and vegetables, musical bricks, lasers, bomb balls, I can go on and on. As the years went by and many different iterations, I just kept adding to it and adding to it.

Andrew J. Mason I think what's so fantastic about this is I get this sense of almost a digital bansai tree or sand garden. You don't do this unless it's a labor of love over the years, and it just gets better and more special the more time you spend on it. What a cool project. Thank you for sharing it with us. I think that's awesome. Talk to me a little bit about how these worlds collide, OmniGraftle and your software development. Can you give us some example of the user flow or some specific ways that OmniGraftle might show up in your development process?

Carson Whitsett It's been most valuable for the client work that I do. I'll do iOS apps. I think I've recently just finished my 60th app published on the App Store. OmniGraffle will play is a big part in that because in order to do an app, you have to be very organized. There are many screens within an app. I don't know if you've heard of the tool Figma. A lot of designers will use Figma to lay out the screens. In the old days, when I was first starting doing apps, I would take those designs and just start coding them up. Because as a coder, you just want to code, right? The problem with that was you would code up things without fully understanding the design. Or maybe the design was done but hadn't been fully fleshed out yet. Now you've coded stuff up, and now you got to undo that and rip out code that doesn't work because it's not how the design is or how it got changed. I needed to find a way to make this process faster. In Omni Graffle to the rescue, what I would do is I would take that design in Figma.

Carson Whitsett I'd put all those screens or screenshots of those screens in OmniGraffle. Then I would link all the buttons, anything a user can tap on. If this goes to another screen, there'd be a line that goes from this button to this other screen. Then on the line, I'll put a little screen transition. You can see like, Oh, is this screen supposed to slide up from the bottom, or is it supposed to slide over from the side? Another thing I would do is once I had the entire design in OmniGraffle, I would go through it and scrutinize it. What happens if a user taps on this button and it doesn't-.

Andrew J. Mason It would be for bugs or unexpected behavior?

Carson Whitsett Yes. Basically, the designer is not going to think of everything and the stakeholders aren't going to think of everything. If we start coding that up before everything is fully thought through, now we're going to be in a problem where we either have to change existing code, which is time-consuming and expensive, or remove code and add new code. You want to have the design fully 100% fleshed out before you start writing that first line of code. What I would do is put red stickies all over the diagram. Anytime I found something that doesn't make sense or isn't clear or hasn't even been thought through yet, I'll put a red stickie there. Then I'll sit down with the design team and the stakeholders, and we'll go through each and every one of those red stickies and try and get them all cleared up. Not until every single red stickie is removed does the coding start. That amazingly saves so much time because now everything is dialed in and you just start coding and you know exactly what you need to do. The diagram is so clear that you can show it to another developer so they can get acquainted with the code.

Carson Whitsett You can show it to QA people so they know how the app is supposed to flow and what they should be testing. You can show it to marketing and customer experience people so they know how the app is supposed to work and they can explain that in their marketing materials or when they're talking to customers. You can show it to the CEO so that they understand a simplified way of how the app is supposed to work. Also in this flow, I'll put logic. Not only do you have the screens and where it goes, but you also have little flow charts for how the app decides things it needs to do, like when it needs to go to the backend to get some data, for instance. Having all that stuff in one place that now the entire team can go look at and see is so powerful and so valuable.

Andrew J. Mason Honestly, that's really brilliant, Carson. I almost liken it to a more visual version of the software sprints that Agile people do. But instead, you have this external artifact that everybody can look at and point to a specific screen and say, Okay, that button right there, when somebody clicks on that, can we all agree on what happens when somebody clicks that button?

Carson Whitsett Think about, say, I got pulled off on another project, and I'm working on another project for six months, and then I have to come back to this project. Normally, what you do is you have to take some time to grok the code. You have to go through the code and understand how it was all put together. Now I got to add this thing, and I got to make sure this thing that I add doesn't break what's existing there, but I don't really remember how it was all put together. I can take an OmniGraftle flow that I made and I can look at that and be up to speed in five minutes. Now I can go, Okay, I know exactly what I need to do and I know exactly where I need to add that.

Andrew J. Mason Carson, I think you're the perfect person to ask for this question. I've been really curious as of late in a world of AI copilots that help you code in a more natural English language way. What do you think the best path forward is for somebody who sees what you're doing, loves the work that you're doing and says, You know what? I think I want to do what Carson's doing. But were he to start today, he might still or he might not crack open that large black programming book and pour through the chapters to learn a programming language from scratch at the assembly level. Talk to us a little bit about what you see happening in the landscape of software development. If somebody is new to the entire thought process surrounding software development, what do you think the best line of approach is for that person?

Carson Whitsett Well, I have a good example. I'm rewriting MacBrick out for its 30-year anniversary. I'm doing it in a completely new game engine, Unity 3D. Because it's going from a 2D game to a 3D game, I'm having to recreate all of the art assets in 3D, learning Blender as well. It's a lot to take on. It's a big bite to chew at once. I find myself in that exact situation, and I feel like I really need a mentor to help me bridge these knowledge gaps that I have. I have a lot of experience programming and I have a lot of experience making games. But learning these new tools, I know what I want to do, I'm just not sure how to do it. That's where I reach out to AI, such as ChatGPT-4, where I can ask it, Here's what I'm trying to do, and it will give me, This is how you do it. With my experience, I can look at that and go, Okay, that totally makes sense, or, Oh, this doesn't… It's not getting it. I think that's important. You can't just trust what an AI gives you. You have to know exactly how it works, especially when asking it coding questions.

Carson Whitsett But more times than not, it has given me a result that was something I wasn't even thinking about. I'm like, Oh, of course, that totally makes sense. It has accelerated my development of this game immensely because all this time I would have spent googling and just digging through documentation and asking people and getting on user groups is done. I can just go ask an AI and it will give me the answer, and then I can evaluate that to see if that's suitable for what I'm trying to do.

Andrew J. Mason Excellent advice. Yeah, excellent advice for that approach. Talk to me a bit about things you would do differently on your career path so far. You have this wonderful career arc, but no doubt also some steps along the way that were you to try it again? I don't think I would do it this way. Maybe it would be instructional for those that are a little bit earlier in their journey.

Carson Whitsett When I first started Diddy Labs, which was in 2010, we set out to make apps for the iPhone. The iPhone was still pretty new back then, and app development was still the Wild West. It was a struggle to get clients at first, I remember that. But when we did, we would tell the client, We'll do your app for this much. It was basically a fixed bid contract. Every single time we lost money, we always underbid the project. The mistake was that we weren't spending enough time diving into the details of what needed to be done. We're like, Oh, this is a login screen. That should take a day. Not really thinking about what happens if the login fails or if there's no internet connection or the multitude of things that can happen around login that we weren't thinking of that we needed to eventually solve for free because we had already bid whatever it was that we were going to charge for that. I actually wrote an article about this called Estimate Accurately Complete on Time on LinkedIn that explains the struggles that I went through starting a new business and trying to get to a point where the customer was happy with what they were paying and the developer, us, we were happy with what we were charging and not getting birds, neither side getting burnt and everybody feeling good about the end result.

Carson Whitsett That would be a good article to check out that really dives into the details of how I solve that problem and don't make that mistake anymore.

Andrew J. Mason Carson, one more question before we let you go. I'd love to hear what is your heartbeat behind the work that you do? You're obviously passionate about what you do. We're honored that Omnigraph will plays a role in the process, but it's very obvious that there's something more than just the day-to-day that's driving you. Maybe dig into that a little bit. What is it that at the end of the day, this is what I think drives me?

Carson Whitsett I think avoiding boredom. I love creating something from nothing. A book or a movie, there's one path from beginning to end, and it's always the same. But games, they're interactive and the outcome can be different every time. As a creative and a solo developer, I can hop between these different disciplines. I can do programming for a little bit. I can do game design. I can dive into the psychology of a game. I can be recording sound effects one minute. I can be composing music, creating 2D and 3D artwork. It's never boring. I can always just put on a different hat and go work on something else. I really like that aspect about it. I think that is something that keeps me passionate, is always having something to do. If I don't feel like doing this one thing, there's plenty of other different things that use a totally different part of the brain that I can work on.

Andrew J. Mason Carson, this has been so much fun. We're so honored to be able to be a part of your journey. How can folks stay connected with you, find out more about MacBrickount, hear more about your projects, and just see what you're up to?

Carson Whitsett They can find me on X Twitter, I guess is what you call it these days. I'm at Carson Whitset. You can find me on LinkedIn. If you like piano music, you can hear my piano album on Spotify. Just look for Carson Whitset Jr. If you find Carson Whitset, that's my dad, and he has some pretty cool music on there as well. I'm currently rewriting MacBrick out in Unity, as I mentioned before. You can follow along there on Facebook. Com/mcbrickout. I also post some stuff on Twitter. I'm probably most active on Twitter.

Andrew J. Mason Oh, and to mention, today is Carson's birthday, so happy birthday to you.

Carson Whitsett Thank you.

Andrew J. Mason This has been awesome. Thank you so much again, Carson, for joining us. This has been great.

Carson Whitsett Thanks, Andrew. I enjoyed being on.

Andrew J. Mason Hey, and thank all of you for listening today, too. You can find us on Masterdone at the Omni show at omnigroup. Com. You can also find out everything that's happening with the Omni group at omnigroup. Com/blog.