Hacker News new | ask | show | jobs
by jpulgarin 2549 days ago
No blog post yet but I'm happy to answer any specific questions here. Effortless is a fairly simple app although there were some tricky edge cases to handle like when the task name is too long for the menu bar (especially when dealing with multiple monitors), and how to update the current task in the menu bar when making large edits to the task list. Making the app simple to use and cutting down the list of features to the bare essentials was also a process that involved a lot of iterations and talking with early users.

I learned Swift and native Mac app development in order to develop Effortless and have since fallen in love with Swift. It has replaced Python as my language of choice for many tasks.

1 comments

I for one would love to hear more about your transition as someone who’s been with Python for a while now but struggling to make Swift stick (last attempt was with SwiftUI, which is awesome but very young).
Definitely! I got lucky in the sense that wanting to create Effortless forced me to learn Swift. I wanted much more control than something like Electron or BitBar could give me, and I wanted to make this app a reality. I had also been working professionally with Python for the last few years, and the codebase at my previous company was so large that I started to miss working in a statically typed language.

I didn't do anything that special to learn it. I gave the The Swift Programming Language book (1) a read and then started to get my hands dirty, using Google when needed. I had done some iOS development a long time ago, which also helped. I almost immediately found it just as easy to write as Python (and in some respects easier) but with a stronger type system. It also has a lot of great tooling like Playgrounds. So I guess my advice would be to give yourself a project which you want to use Swift for, ideally where you have no other alternatives. I've also tinkered around with using Vapor to create web servers using Swift, so that might be another option.

1. https://docs.swift.org/swift-book/