Issue #97 - Sim Saens
Happy Monday, everyone!
We made it to Issue #97! Thank you to everyone who read last week’s issue ❤️
Deep Dish Swift is the best pizza themed iOS and Swift conference being held in Chicago May 5th to May 7th in 2024. The conference brings togethe Swift and iOS developers of all experience levels and backgrounds in an inclusive environment to share knowledge and experience from a diverse set of speakers. There are talks and a live podcast recording specific for indie development and also two full days of Swift and iOS talks!
Today’s Spotlighted Indie Devs
📆 Today I’m featuring Sim Saens.
👉 Please make sure to follow them or support them anyway you can! 😇 I’m excited to share their indie dev stories.
Indie Dev
Sim Saens
iOS Developer at an agency, indie developer, and creator of Codea and Shade
Sim Saens
Q&A
1) What is your name? Where do you live?
Sim Saens. Adelaide, Australia
2) Introduce yourself. Education? Background? Main job? Interests outside of tech? Interests inside of tech?
I’ve been a developer since the mid 2000s. My education was in Computer Science, up to PhD — though I dropped out of that with my two friends, John Millard and Dylan Sale to start working on games and iOS (then iPhoneOS) apps in 2009.
Outside of tech I love spending time with my kids, running, cooking, dancing, squash and badminton.
Inside of tech I’m very focused on iOS development, especially in the creative tools space and game development. I’ve recently gotten back into 3D rendering with Blender.
3) Have you ever considered yourself an indie developer?
Since 2009 I founded Two Lives Left with John Millard and Dylan Sale, we were completely indie for a while, and then needed to get jobs to support ourselves. So we’ve been working part-time and indie part-time ever since.
4) What got you started/interested in creating your own applications outside of your “normal” job?
Multi-touch was the big draw for me. I don’t know if you remember when it started getting popular, back in the mid 2000s, we saw videos of people interacting on huge screens. Zooming into images and maps on table-like displays. Then in 2007 Apple shrunk that tech into a hand-held sized device that anybody could buy. We bought the first multi-touch iPod touch and immediately started developing for it.
That fluid, direct touch interaction was the big draw for us to want to develop there. I think everyone felt it was kind of magical at the time. It was an opportunity to re-think all the human-computer interaction we were used to and make it more direct, more emotional even.
5) How do you balance your time between friends/family, work, hobbies, and indie dev?
The vast majority of time is spent with my kids. When school ends at 3pm I’m there to pick them up and I’m with them until I’ve cooked dinner and we’re reading bed-time stories in bed. It doesn’t matter about work in those moments, nothing happening at work or on my hobbies is more important than being with them.
Outside of that, I work at an agency developing iOS apps for clients. I usually find an hour each day to exercise, and after the kids are asleep I work on one of my own projects, Codea, Shade, and lately some small games.
6) Codea, Shade - I’m so excited to add two more apps to my iPad suite of development apps! I spent most of 2020 using only my iPad and I loved it. What inspired Codea and Shade and their focus on coding and creating things on mobile devices?
Codea was motivated by an argument I had with a friend in 2009. We were just starting into game development back then, and we had had a heated discussion over some game mechanics. After that discussion I had gone to a cafe with my iPad, and I opened it up and was frustrated that I couldn’t write some simple code to demonstrate my game idea.
So when I got home that night I immediately opened Xcode and hooked up a basic text view to a Lua interpreter. Over the next week I got a basic 2D OpenGL based renderer taking commands from the Lua API and that was the basis for Codea.
At that point we realised the game idea didn’t really matter, it was much more fun to work on a creative tool for making games.
Shade came about because I mentioned to John Millard, who co-founded Two Lives Left with me, that it would be really cool to have a node-based shader editor in Codea. John is the type of person who will hear an idea then have a working prototype within a few days. A few days later he had a working prototype of what would eventually become Shade. Once I saw the prototype I started designing the UI in Sketch and developing the UI code while John worked on the renderer and shader compiler.
A big reason we went down this path is because Apple deprecated OpenGL. In Codea you can write shaders using GLSL (OpenGL Shading Language). This allows you to code more advanced graphical effects. However, given that we will need to move to Metal (Apple’s new graphics API), we wanted a language-agnostic shader editor that we could take with us. Shade gives us that tool.
7) Codea - Codea is blowing my mind! As I mentioned, I spent most of 2020 using only my iPad and part of that was trying to figure out how to make a Lua based game development environment. I’m sad that I only just recently found out about Codea and that it’s also built using Lua. What was the decision to power Codea with Lua? How does Lua run on iOS? Are there any major benefits and limitations to Lua?
Thank you!
Back in 2011 when Codea was released people weren’t using iPads with hardware keyboards (at least, not much!). A big reason for choosing Lua was that the language doesn’t use a lot of symbols (e.g., in Lua you use do
and end
instead of {
and }
). I really liked this aesthetically, and because symbols were difficult to type on the iPad software keyboard. The language is also very beautiful and minimal I think, I am also probably one of the few people who likes the human-friendly choice to index lists from 1
instead of 0
.
Lua has a very small VM written in highly compatible C. It was simple to integrate with (at the time) the Objective-C++ codebase for Codea. It has always been very performant, and its simplicity makes it great for creating quick prototypes.
The limitations of Lua are: it is not as widely used as other languages, making support harder to come by when searching for answers online. It is a dynamically typed language, so any concept of type safety is thrown out the window. Its dynamic nature means it is difficult for the IDE to reason about your code.
8) Codea - I was browsing Codea’s website and saw there are apps on the App Store that were made with Codea. That is like the coolest thing to me! When you started making Codea, did you think that people were going to release native apps that were built with Codea? What have been some of the coolest things that you’ve done or seen your users do With Codea?
We didn’t intend to support exporting to Xcode from Codea, but people kept asking for it!
A lot of people posted really great games to our forums, one user in particular posted a very cool robot-arm-puzzle game. We asked him if he would work with us to turn it into the first game developed entirely on iPad, and he agreed. In 2012 we released Cargo-Bot, which was a test of our initial support for building native apps from Codea.
Since then people have been making really great and interesting games. From a pixel-perfect pac man clone to an app for interfacing with a neutrino telescope. We keep an active thread on our forums for App Store releases in Codea.
Starsceptre was particularly stunning, created by talented artist and developer Richard Morgan entirely in Codea. I was blown away by how professional the game felt and looked.
On a side note, most of Shade itself is written in Codea! We detailed the different layers that make up Shade here.
9) Shade - I have never understood shaders so I was a little bit intimidated when I installed Shade. However, after playing with it for a while, I think I was starting to understand how they work 😅 I’m not a shader expert but Shade looks like a very fun and hands-on way to learn and build Shaders. Are you able to give an ELI5 (explain like I’m 5) of shaders to help me (and maybe others) what they are and what they’re for?
Shaders are how you can tell a computer how the surface of an object looks. For example, a shader might describe a surface as shiny, or rough, colourful or reflective.
Typically, you apply a shader to the surface of a 3D model, like a sphere or a character in a game. The shader describe the appearance of wet mud that has foot prints where a character steps, or skin with freckles, or anything really.
Because shaders are basically computer programs that run on your GPU for each pixel you render, they can be quite advanced. They can distort a surface, create clouds or smoke, or even create fake interiors for buildings. In fact, one of the advanced shaders that comes with Shade is an interior mapping shader like the one in that video.
10) Codea, Shade - What has been the hardest thing you’ve come across when building Codea and Shade? What was one of the coolest things you’ve learned?
The hardest thing for us has been just how big Codea and Shade are now. There is so much code, across so many languages and areas of the app, that it is hard to wrangle and work with sometimes. It is only John Millard and me working on it now, so it can be hard to sometimes even think of where to start working when we go into the project.
The coolest thing I’ve learned is that creating something you love can be something that other people also love to use. Codea was never created for anyone except myself and John, yet when we released it, it seemed to attract a lot of like-minded people.
I just love the people who use our app and I am so grateful that they have spent their time with it and enjoyed it and often given us feedback about what they like and don’t like.
11) Codea, Shade - What’s next?! Do you have any future features that you can share with us?
We are working on Codea 4.0, which has a brand new render engine written in Metal. It is taking a long time.
You can see a preview here. We are being quite ambitious in that we want to have a real-time 3D scene editor, code editor, and an engine that runs on macOS, iPad and iPhone. It’s particularly fun to start designing a Mac app for a change!
12) What’s been the hardest part of being an indie dev? What is the most fun part of being an indie dev?
The hardest part of being an indie dev is that I don’t get to devote all my time to the projects I love working on. I would love nothing more than to work on Codea full-time, but I can’t, and split my time between that and another job. I often feel guilt when I haven’t had the time to update Codea for a few months, that people may be using the app and experiencing bugs and frustrations that I should be fixing, but have not had the time to fix.
The fun part is being able to think about an exciting idea, make it, and release it into the world. It was really fun hearing my oldest son come home from school in the second grade and say “Dad! They use your app at school to teach coding. My teacher had no idea that you made it. I told him!”
(I had no idea my son’s school was using Cargo-Bot and Codea to teach the kids, but it was really cool to learn!)
13) Is there anything else you’d like to tell the indie dev community about you?
Nothing really except that I’m always open to chatting about anything dev or design related if anyone reaches out by Twitter or email
14) Do you have any other indie devs that readers should follow / lookout for?
Definitely! Between iOS and game indie devs, in no particular order:
- John Millard, co-creator of Codea & Shade
- Anders, creator of the best Git client on iOS. @bleeshem who is doing really creative things with ProtoPad, a visual development environment for iPad
- Simon Støvring creates Scriptable and Runestone, another great coding experience on iOS
- Alex Strook for wonderful art and game design. Becky Hansmeyer, creating brilliant, focused iOS apps with SwiftUI
- Sean Heber, creator of Twitterrific
- Dave Sapien who recently released Kanso, a meditative game
- Kenny who is doing the world a service with free, quality assets and great tools
- Steve Troughton-Smith, creating extremely polished apps, and if you want to know anything past, present or future about iOS & Mac
- Luke Rogers creator of Pixaki, an iPad pixel art tool
- Till Konitzer, creator of the Essayist app
- Leena, writer on Dead Static Drive
- Dave Verwer whose newsletter you should subscribe to if you do any iOS stuff
- Amazing procedural art generation by Oskar Stålberg
- The Muse app, because it’s one of those highly spatial UIs that few people are doing at this level of polish
- Philipp Stollenmayer who creates some of the craziest indie mobile games
- Tanmay for apps with really polished interactions and UI
- Will Bishop, also from Adelaide, like me, making some brilliant and popular apps
- Nick Lockwood with some great open source projects
- Octavi Navarro for amazing pixel art
- Jeff Vogel making games since 1994, so, you know, an expert
- Lisa Vertudaches, great illustrations and animation
- Game Maker’s Toolkit by Mark Brown
- Alexander Blach, creator of Textastic
- Guilherme Rambo
- Ish
- sdw
- Louis D’hauwe
- Kyle Howells
- Matt Trobbiani
- David Frampton
- Madgarden
- Matt Rix
- Owen Goss
Newly Released and Updated Indie Apps
Here are some newly released and newly updated apps from this past week! If you would like to possibly see your app in this list, please submit your app to the look at me form 👀
Thank you to everybody who made it to this footer! You either spent the time to read or took the effort to scroll 😊
Make sure to visit https://indiedevmonday.com/subscribe to get an email of future issues!
And go to Twitter and give @IndieDevMonday a follow… or multiple follows if you manage more than one Twitter account 😜