More Thoughts on the Type of Programmer I Am

I wrote back in July about my programming career, how it had changed, and also both what programmer I see myself as now, and what I want to become in the future. It's a reasonably long post (~1000 words), but the tldr is essentially, I joined as an iOS developer, but after some internal changes, I'm now primarily writing server applications in Java, but at the same time, other projects that are quite random, e.g. JavaScript scripts for NetSuite, Python scripts for data operations, etc.

The conclusion of that post was:

I’m starting to think that I’m just a “programmer”. No fancy specifications (or limitations), just someone that writes code in order to get things done.

And I think that's still true. But it's been in the back of my head ever since, and I'm certainly a bit more sure about the type of programmer that I want to me.

Back last year, there were some redundancies at work, primarily because they wanted to shrink the local teams responsibilities into more local projects (our headquarters is now in China). I, obviously still work there, but I did think about leaving at that moment. The problem was, I wasn't sure that if I did take redundancy, what job I would look for next. I hadn't worked in iOS for a while, and I'd only just recently started writing Java full-time. I was in a weird situation.

But after just over a year in the new role (I now both work on Java applications, third-party integrations, and also as a software architect for our Enterprise APIs), I'm enjoying it a lot more than I thought I would. And I think it's primarily down to the range of work that I get to do.

Recently, we were having an issue with an integration that we have built for a third-party system, which would communicate with one of our own REST APIs. It was a pretty hard situation to debug, because the third-party is pretty closed, and only certain customers were having these issues. But thanks to this new flexibility in my role, and probably that I'm one of the most experienced in the team, I was allowed to try to investigate/fix the problem in my own way.

My solution was to create my own tool that could help us investigate the connection to our APIs. We couldn't just use something like Postman because this API has a few non-standard authentication measures that made that impossible. But because I have experience in web development, I put together a web page, with some client-side JavaScript that could mimic as close as possible the situation that was having issues.

I'm not going to say that this little tool suddenly fixed all of our problems and I'm such a great programmer. But it made me appreciate this new role more, and made me think "hang on, I'm now the type of programmer that makes tools for myself". That felt pretty good to be honest.

I still don't know what the official title is, but I'm now more sure than ever that I don't really want to go back to iOS/mobile development full-time. I'm finding it much more enjoyable writing both server-side code, and also the various scripts, tools, and new challenges that have seemed to come with the territory.

2023 App Defaults

As many others (over 100 as I write this) have done, it's now my turn to jump on this latest trend of sharing my default apps.

You'll see that my current default apps, I'm in a bit of a weird state in regard to the software I use. Or maybe it won't seem like that, maybe it just looks like I don't have very a interesting taste. However, I do want to refine the software I use on my phone, and probably also work on a better Home Screen that can better server my day to day needs.

Hopefully reading other peoples lists will give me a bit of inspiration on how other people use their phones, and inspiure me to try other apps or solutions.

Nevertheless, here's my list of default apps. (Using Robb Knight's list, and also a few extra from myself).

  • Mail Client: Apple Mail (all platforms).
  • Mail Server: Google Workspace/Gmail.
  • Notes: Sometimes Apple notes other times Neovim.
  • To-Do: Things 3.
  • iPhone Photo Shooting: Native Camera app mostly, but Halide for serious photos.
  • Photo Editing: Capture One.
  • Photo Management: Apple Photos app.
  • Calendar: Apple Calendar app.
  • Weather: Apple Weather app.
  • Cloud File Storage: iCloud Drive.
  • RSS: NetNewsWire via Feedbin.
  • Browser: Safari mostly, but Chrome at work.
  • Chat: iMessage and WhatsApp. (Groups mainly in WhatsApp)
  • Bookmarks: I tend to forget to use bookmarks properly, and just leave browser tabs open.
  • Read It Later: Usually open browser tabs as above, but occasionally Matter.
  • Shopping Lists: Apple Reminders.
  • News: I guess X is the general way, or BBC News.
  • Music: Apple Music.
  • Podcasts: I don't listen to many at the moment, but I switch between Apple Podcasts and Overcast.
  • Password Management: A mix of iCloud and 1Password. But I'm moving away from 1Password as the Safari extension annoys me.
  • Social Networks: Mastodon (Fosstodon) via Ivory, X, Instagram, Glass, Micro.blog.
  • Sports Scores: OneFootball.
  • Code Editor: Visual Studio Code for quick edits, Neovim to feel clever, and Textastic on iOS.
  • Terminal: iTerm 2 with ZSH and Oh My ZSH.
  • Writing: 1Writer sometimes on iOS, othertimes Obsidian or Visual Studio Code.
  • Text Transformations: Text Case.
  • Package Manager: Homebrew.

Gran Canaria Photos

As you may have seen from my update on my micro blog and on social media, I've just came back from a week long trip to Gran Canaria. While I was there, I made full use of the beautiful scenery and landscapes, and took a ton of photos.

I've just finished refining a bunch of them, and I'm left with 14 photos that I'm really happy with.

Note: I took a load more photos at the coast on the last day during sunset. I'm going to edit these separately, as I think they could serve as a great wallpaper pack. But whatever happens with them, I'll post about it here.

All photos were taken on an iPhone 15 Pro Max.

Walking to the terminal. Gatwick Airport. | Full Size

Playa Taurito Beach | Full Size

Walking around Mogán. | Full Size

Lighthouse near Puerto Rico beach. | Full Size

Boats near Puerto Rico beach. | Full Size

Basket structure exposing the view from Tejeda village.| Full Size

A flowery scene in Tejeda with the views of the valleys and mountains. | Full Size

Tejeda village. | Full Size

A small village in the mountains. | Full Size

Another view of the mountains from Tejeda. | Full Size

One of many rock formations at sunset. | Full Size

Cascading waterfalls in Firgas. | Full Size

Local church in Firgas. | Full Size

Shopping centre in Las Palmas. | Full Size

Finished Software

Jose M. Gilgado talking about finished software:

Finished software is software that’s not expected to change, and that’s a feature! You can rely on it to do some real work.

Once you get used to the software, once the software works for you, you don’t need to learn anything new; the interface will exactly be the same, and all your files will stay relevant. No migrations, no new payments, no new changes.

This kind of software can be created intentionally, with a compromise from the creators that they won’t bother you with things you don’t need, and only the absolutely necessary will change, like minor updates to make it compatible with new operating systems.

I like the idea of software being finished. Especially for utility and productivity tools. And even more so for tools that people rely on. For that kind of software, I like it when things work, and stay working.

This is also something I've partially thought about my two current apps Text Case and Text Shot. Text Case is obviously a lot older, and has matured through a few big overhauls. But as of now, I'm not looking for any big new feature additions, or any redesigns. I may add more formats into the existing structure, but I think that is it.

As for Text Shot, that app is rather new. And it provides a single function, to transform text quotes into styled images. It has some basic support for colours, fonts, and even allows for Markdown formatting. But the core of the app is finished. And I think I'd like to keep it rather minimal rather than add a bunch of short-lived features.

Shot on iPhone Controversy

There seems to be a small about of controversy with Apple's recent Scary Fast event, since they've showed everyone how it was all shot using an iPhone.

The criticism seems to be along the lines of "Yeah, you used the iPhone, but you also used a ton of other camera tools and accessories.".

In my mind, this misses the point of the #shotoniphone idea. To me, shot on iPhone means that the entire filming process used an iPhone in place of where a real camera used to be.

To think that using an iPhone to film a video suddenly mean a camera dolly isn't needed, or that an iPhone torch can replace flood lights, is pretty stupid.

If an entire video can be made on an iPhone without any extra accessories at all, then that's great. But if an iPhone can slot into a big-money filming process, replacing a probably hugely expensive camera, then I think that's still something worth shouting about.

Text Case CLI 1.4

I'm on holiday in Gran Canaria this week, and whilst I was sitting on a sun lounger, I decided that I'd add a few more formats to the Text Case CLI tool.

Coming in the latest release (version 1.4), are 5 more formats which are all different counts:

  • countCharacters -Count number of characters.
  • countCharactersExclWhitespace - Count number of characters, excluding any whitespace characters.
  • countWords - Count number of words.
  • countLines - Count number of lines.
  • countLinesExclBlanks - Count number of lines, excluding any blank lines.

That now means Text Case CLI has 49 different formats.

You can find installation instructions on the Text Case CLI GitHub repo.

While you're there, I'd encourage you to show any appreciation with a star or a watch, since I'd like to eventually move this tool to an official Homebrew cask. And one of the requirements of that is that the repo must be notable as in over 30 forks, 30 watchers, and 75 stars.

Matter as a Read Out Loud Service

If you haven't heard of Matter, it's a pretty powerful reading tool, that can serve as a basic read-it-later service, or or more complex reading system.

While I don't use it fully, I've found one feature to be very useful for when I want to read long-form posts, but while I'm doing something like playing a game or doing chores. I'm sure it has a fancy name, but it's the text-to-voice feature.

It's super easy to use, just send over an article to reader (I tend to use the Safari extension), and then inside reader, you can just press the play button to have it start reading the post to you.

send-to-matter

matter

Maybe in the future I'll use Matter for actually reading posts. But right now, it's meaning that I can read a lot more blog posts than before, and I can sit and play World of Warcraft at the same time.

Slow Conversations

Numeric Citizen, recently wrote about slow but delightful conversations via email:

One advantage of email is that it allows for more thoughtful and deliberate communication. Unlike instant messaging or phone calls, where responses are often quick and on the spot, email will enable individuals to take their time to compose well-thought-out messages. Email communication allows for more thoughtful and well-considered responses thanks to its asynchronous nature. Unlike synchronous forms of communication such as phone calls or instant messaging, where there is an expectation of immediate responses, email allows individuals to carefully craft their messages and review and revise them before sending them. This contributes to clearer and more accurate communication, as people can take their time to gather information and reflect on their thoughts before replying.

I've always thought of email in its purest form being akin to writing a letter. There's an expectation that comes with it, that you won't necessarily receive a reply very quickly after writing to someone. And this changes the dynamic and the attitude towards how emails (and letters) are written.

However, as much as I enjoy the process of writing and reading emails. My realistic experience of email is that my inbox is usually a mess. Various order confirmations, random deals or sales from annoying brands/stores, newsletters that I've forgotten to unsubscribe from, and random ones like "you've just signed in via a new device" or "we've updated our terms and conditions".

I've been thinking of a solution, and the only thing I've come up with is to have a completely separate email address for communicating with people. And to try as hard as possible to keep spam away, newsletters, account updates, etc.

So, for now, I've created a new email address just for that purpose, chris@chrishannah.me. At some point, I'll add this a "reply via email" button to my posts, but for now, it can sit here.

One thing I would like to say about that email address is that I will be very stringent on spam emails. It's for conversations between people only. Let's see how it goes.

Hidden Bar - A Minimal Menu Bar Solution

Having a menu bar full of apps is a common problem on macOS, and for a while, the agreed upon solution was Bartender. However, the problem with Bartender is that it's grown quite substantially over the years. So if you just want to a quick way to clean up your menu bar, it's probably not the most suitable product anymore.

Thanks, to Superbits (and ldstephens for the tip), there's a new app that addresses the problem in the most minimalist way possible, Hidden Bar.

Hidden Bar

It's a totally free app. And all it does, is add a separator icon to your menu bar, which you can place to the right of the icons you want to hide. And then another icon that you can use to toggle the visibility of those extra icons.

There's also an auto-hide preference, so after expanding, they will automatically hide after a specified number of seconds.

It's literally a perfect solution for a very common problem. And it doesn't come with any kind of bloat at all.

I love these kind of apps.

My Blog Isn't a Perfect Moleskine Notebook

One of the biggest problems that I have with my blog, is that I spend too effort making it look nice.

Not that it takes my time away from writing, or that it's not important. I definitely appreciate the effort I take with the design of my blog.

The problem is, I appreciate it a bit too much.

My blog currently has around 336k words across 1k or so posts. So I'd say there's a fair bit of writing here.

But when I spend too much time refining the design of the blog, it makes me want to only publish the most elegant and perfect essays. It starts to feel like a brand new notebook where you try to write as neatly as possible, never making a mistake, etc.

That’s why at times I’ve written posts along the lines of “This is how I want to write for my blog” before. I guess it's some kind of pre-emptive warning to try and set the readers expectations. But I think it was more for my benefit than for anyone reading.

At the same time, I don't want to belittle that type of blog post. Because I think it has its use. While, it may not serve any use on its own, it gets the ball rolling. Whatever friction was there before has been slightly reduced.

Maybe that's why bloggers always talk about writing regularly and being consistent. For me, it seems that biggest factor that helps me write for my blog is momentum.

My blog isn't a perfect Moleskine notebook. It's a old and battered collection of notes, photos, longer pieces of writing, and all sorts of scribbles and mistakes. And sometimes I need to remember that.