KaliTrue’s first update

Well, it took longer than I expected, but within the next few days (today is November 18, 2025) I will be releasing my first update to the KaliTrue app, my iOS (iPhone) app to assist people in calibrating their displays so that they show accurate colors.

So the best way to show the changes is to show you a comparison of the old vs. the new. So, here’s the old “Main” screen:

And here’s the new version:

There’s a couple of things to note here:

  • The target white-point can now be shown – in the example, you can see “Monitor/Display” as well as an icon of a monitor. You can choose from showing just the text, just the icon, both, or none.
  • The animation that plays when you’re measuring now looks more like a target… the old one was supposed to convey a “display” but it fell short of that goal, and I felt a “target” would be more appropriate.
  • The menu at the bottom now supports Apples Liquid Glass.
  • The change people should be most excited about is that the app now shows measurements in tenths-of-percent, as compared to whole percent values in the old version. This will make it easier to see the effects of changing the color settings on your display.
  • The old version considered anything better than 97% as calibrated. The new version now lets the user select the desired accuracy, in tenths percent, from 97% to 99%.

Now let’s see the old “Settings” screen:

And now the new one:

Note there are now two new settings:

  • White Point Display – lets you choose how to display the target white point
  • Maximum Deviation Considered “OK” – Lets you set, in tenths of a percent, the desired accuracy considered to be calibrated, from 97% (the default) to 99%.

I’m excited to be releasing this update, and I hope my users are too!

An Open Letter to Aggressive Men

I originally posted these thoughts to FaceBook on November 10, 2013, nearly 12 years ago, but it may be more relevant today, so I’m re-posting.

A few nights ago, something happened to me that is still bothering me days later. I was driving along the roadway, and I needed directions to a gym I knew was nearby. I pulled up alongside a female pedestrian in my car and called through my passenger side window, “Excuse me, can you help me?” She turned away and sped up a little. I didn’t realize at first why. I matched her walking speed and called again, this time a little louder… “Excuse me, can you help me?”  Suddenly, the reason she was ignoring me was clearly conveyed by her body language… my pulling over alongside her, on a dark street, had somehow made her very, VERY nervous.

I felt bad. I felt bad for her because I had a hunch why she was nervous. Here was a loud, large male, approaching, and nearly “cornering” her. Now the question is, what do I do about it? I could drive away, but then she would be walking home nervous and wondering if this person would drive around the corner and wait for her to walk by.  I decided to try just once to lessen her nervousness and did the only thing I could think of… I called out, “I was looking for the GoodLife Fitness, and I thought it was in this block”. As I did so, I swung my car away from her so she had several “escape” routes… conveying friendly body language as well as one can using a car. She seemed to relax right away and said, “Oh… sorry…. it’s back the other way, one block”. I bid her good night and left. I wanted to get away from her and let her forget how she felt for a brief moment. It was a horrible feeling.

Earlier this year, I was walking to my car, which was parked a few streets away. A few seconds after I passed a female walking in the other direction, I realized I had forgotten my laptop and decided to go back to my house and get it.  I turned around and broke into a run. My sudden direction and speed change must have been taken for aggression by the female, because she let out a sound that can be best described as one of fear and began to run, all the while looking back at me. I stopped my run immediately and waited for her to “get away”. I said nothing. What could I say?

These are not isolated incidents. I have had women react this way to me before when they are alone. And I know it’s not me. It’s the way some men treat women that has caused this. My being 6’2” and of stocky build doesn’t help.

When I first decided to write this, I felt like I should apologize to women for the behaviour of some of those of my gender who have created this culture of fear. But I have decided that’s not the message I want to convey. That’s not the correct audience. This letter needs to be directed at the ones who have caused this problem.

So this letter is to you men who hit women, you men who don’t treat women with respect and dignity, I am pissed off at you. I am pissed off because you have not only made it impossible for many women to feel safe in what should be innocuous situations, but you have made it impossible for men who aren’t assholes to break into a run or ask a young lady for directions. You have created a culture of fear and distrust. You have sullied the reputation of my gender, and I am sick of it.

Now many of you may be thinking there are aggressive women too who have contributed to this culture of fear, and I say, yes, I guess that must be true to some degree. You may also point out that there are some males who because of their smaller stature or physical appearance or even their mannerisms may also experience fear and distrust of their own gender. But I am tired of the “yes buts” being used to counter an argument. I am not going to let you diffuse this one that easily. The unfortunate truth of the matter is that there are still far too many men who display aggression in situations where aggression is not appropriate, and those men are ruining it for the rest of us who are decent, reasonable folks.

We’ve had enough. The women who don’t feel safe answering a stranger’s query for directions have had enough. And not just women… this one is for the children who learn fear from witnessing their moms’ abusive boyfriends and fathers’ behaviour; this one is for the slender male who doesn’t feel safe walking home at night; this one is for the transsexual who has to deal with these situations and much, MUCH more; this one is for the gay man who does not feel safe walking home alone from the gay bar.

All these groups and all the decent men too are a huge majority to your minority. So to you, Mr. aggressive “man”, the decent men of this world have had enough of your crap, and it’s time for you to think about what it is that defines a “real man”. I’m going to help you with it. A real man is one who knows he’s accountable for his actions. A real man is one who knows how to control his anger, his rage, his behaviour, and how to communicate with another human being to resolve a situation. Real men are not bullies. It’s time for you to grow up and become a real man. If you want to show the world how truly strong you are, showing restraint and control in all situations is the best way to do it.

As I write this letter, I know it’s mostly only going to be seen by those who already know all of this. None of the men who need to read this letter will ever read it. And even if some of them did… would it really make a difference? Here again, thanks to the behaviour of a few, I feel powerless, helpless. I wish I knew what I could do to change this situation.

What’s up with Jamie’s state of app development?

So just a quick update… yes I am still developing apps! My first app has already been released, https://KaliTrue.app is the page to check it out and there’s a link there to get the app.

Since releasing the app a few weeks back I have taken some quick staycation time with my spouse… we got to spend a long weekend at the inaugural https://guitarsandgasoline.com music festival and that was a lot of fun. I got to celebrate a friends 60th birthday, and I am jealous he only looks 45. I got to spend some quality time with my camera… lots of flower pics mostly! And I have also been doing some administrative tasks for both my business and my spouses.

But in the back of my mind is/was always “what’s next?” Do I start work on the paid version of KaliTrue? Do I start another app? I have kind of been thinking of doing both at the same time, which would be interesting.

I’m honestly doing a lot of thinking about what my next app should be. In terms of making money as an indie dev, games are the gold standard… they make the most money, but I have never been a gamer myself and I think that puts me at somewhat of a disadvantage. Also, games would probably benefit from UIKit and I have been focusing on SwiftUI (in English? My focus has been on a framework that is less suited to games.)

The next best way to make more money is to charge a lot for a niche app… but nothing comes to mind, and it’s not a guarantee.

So I find myself constantly thinking…. what should my next app be. I have a small list that I add to when I have an idea, and occasionally I triage the list and throw out ideas that–for one reason or another–are not worth pursuing even if the idea itself is solid. For example, ideas that have a very narrow appeal, or ideas that require huge development effort… think 12-18 month projects.

And so, I keep thinking…. day-and-night… what to build! And this is where you come in I guess… I have asked before of my friends and fans… what app idea do you have that you would like to see built? I’ve had several friends and family come up with ideas, but more than half have already been done, and done well enough that it’s not worth the time risk to try an improved implementation. And besides, I would prefer more unique ideas.

But hey, if you have an idea, shoot me an email at my business quick-contact email: labs_clothes_5l@icloud.com and we can talk. If you wanna just throw me an idea and I take it on wholly, then you get credit and maybe even an honorarium. If you want to get more involved in the process… helping me design it… taking on the marketing of the product… then we can make a partnership arrangement. I have already been talking to two parties about ideas, one where I am little more than that coder and if it works out they stand to make the bulk of the money.

So… get your brain in gear and think… what iPad, iPhone, or Mac app do you wish existed?

I published an app!

I did a thing!

I wanted to name this post “I did a thing™️“, in honor of the person who introduced me to the phrase, Jeremy Clarkson. He often uses that phrase when he does something, especially some easy thing so many other people have done before him, and which are a bigger deal to him than to anyone else. But alas, I am also marketing myself and my apps, so I had to be less stylistic and more professional. I promise, resisting the urge to appear clever was not easily executed.

So as a lot of you already know, on Valentine’s day 2025 I wrote the first line of code for what was to be my first app (iOS app to be specific.) Well, yesterday, June 3, 2025 I released that app, and you can see its web page here: https://KaliTrue.app

But while that’s something that makes me happy, I would like to talk about the process a bit, because while many of you get that accomplishing a goal should bring happiness, the entire process of working toward that goal brought me happiness. As I wrote in a version of this post when I started “… and I’ve been having the time of my life since then, working on that app every day. Yeah, even on weekends… even if only for a few hours. More than once I have found myself glancing at the clock only to find out it was already working on the beginnings of the next day.”

My friends became concerned that I had not taken a break in the first 5 weeks, and that I might “burn out”, so I did finally take a day off. After that I decided that unless there was some pressing reason to work weekends, I would take them off, and for the most part I got better at taking breaks. Well… I took breaks from coding, but I often found myself investigating ideas, looking for new techniques… just exploring the field… but that is my idea of taking time off… more of a shift from one thing to another related thing, rather than a complete break.

April came, and with it some non-coding duties had accumulated to the point where they needed to be addressed, so I was forced to take some time off. It was a bit of a whirlwind actually… broken water heater, half-installed (and leaking) dishwasher, and helping out a friend with a move… April just didn’t exist as far as my project was concerned!

And then in May I got back to it and like I said, yesterday, I finished! My new app, my first app, is now live. It has a web-page: https://KaliTrue.app where you read more about it, and will also find a link to download it for your iPhone, should you wish to do so!

I was surprised by the amount of administration the whole project involved. Forms for taxation, not just for Canada, but for some other countries as well. Forms for export compliance. Documentation on my privacy policy. Declarations about the safety of my app for kids… good news, my app has a 4+ rating so looks like I am good on that, although if your 4-year-old enjoys using my app, an app designed to help calibrate displays for color correctness, then you may want to enroll them in some kind of gifted program and get them off the computer!

Despite the paperwork and related admin, I enjoyed the whole process… and today I am just cleaning up some post-release tasks. Marketing mostly… putting links to my work where I think they might drive people to download it. This weekend I am taking a vacation with my spouse… who is also a small business owner. We’re going to a music festival.

And then, starting next Monday I will begin writing code again. Some code to improve my KaliTrue app, maybe preparing the paid version (don’t worry, there will always be a free version and I will never make previously free features and content paid), maybe working on my next idea…

Ahh, who am I kidding… the dishes are done, festival tickets picked up, clothes for the festival washed and folded, social media posts done… maybe I can do a little work on the next app today…. <Jamie wanders off to write more code>

Thanks to….

I would like to give a special thanks to the people who supported me through this. Family. Friends. Other developers who welcomed me into their clubs, especially Ottawa CocoHeads and iOSDevHappyHour. Educators who share their knowledge, but especially educators Sean Allen and Paul Hudson, the latter being the creator of, among other things, the excellent (and free) online course 100 Days of SwiftUI.

I would like to especially thank Ben, a fellow developer with so much experience I will be honored the day I can call him a peer, who offered to review my code and provide feedback, for free. I expected a simple “yeah, you’re on the right track” at best… but what I got was an itemized breakdown of all my code… professionally reviewed, without judgement, and with an eye to helping me improve. And yes, followed up with an encouraging “you’re on the right track”. I don’t know how to thank you enough, but I will keep my promise to pay-it-forward.

I’d like to specifically thank a handful of people in my local iOS group, Ottawa CocoHeads, but I can’t recall specific names, and the chats on our chat server have long expired. I promise to do a better job in the future to document those who selflessly gave me their time.

And finally, I would like to thank my beta testers, who humored me through this process and patiently tested 21 releases of my app! Five of you were anonymous, but 13 of you were not, and I owe you all a debt of gratitude. Thanks to:
• JP (my patient spouse and financial backer)
• Carmen (my first official–and professional–tester!)
• David (who also helped me with accuracy testing)
• Dean (who became not only my surrogate “average user”, but the idea man I didn’t know I needed. Dean helped me nail down the design of the most visible part of the UI early in the process. Dean also asked a lot of tough questions that led to a better product in the end)
• Doug (who also inspired me to do my very best, especially for my documentation)
• Ira
• Jeff (who patiently suffered through way too many “how about if I did this” questions, accuracy testing, and “should I be going indie?” chats)
• Mark
• Miguel
• Phil (also a great mentor!)
• Richard
• Rob (who could ask for a more supportive brother)
• Russ (not an app tester, but a tester of much of my infrastructure… an equally important role)
• Tom

Rename my app or not? (The “fallout” phase)

Well, I have taken some time to think about how to handle the issue with the naming of my app (see my May 13 blog entry if you want more detail) and I can basically proceed in one of two ways:

  1. Register the .app domain for my app with the existing name, i.e., keep the name I have been using since I started writing the app
  2. Find a new name and begin the work of re-branding, including acquiring domains

So, I could register the .app domain for my app with the existing name. This approach would be incredibly simple, but it would not be straightforward. As I mentioned, the .com domain is already registered, and by a startup that is branding themselves with the name. Even though they beat me to the name by just a few months, they did beat me fair-and-square. They have not, however, registered the .app domain, leaving anyone free to do so for now. So I could register it for myself, for my business, but using that name comes with a risk.

If their business succeeds, then as they grow there might come a point where they will notice I have their name registered as a .app domain and would have a good chance of forcing me to stop using the domain, especially if they decide to trademark the name (they haven’t yet). It’s too late for me to trademark it as they have “prior art” and would easily be granted the rights in court… and besides, I honestly feel grating the .app domain would be a crappy thing for me to do.

And even if I did grab the .app domain, I would always be in a risk position where they could come after it at some unknown point in the future, and then I would be forced to re-brand anyway.

And then there’s the professionalism consideration. I too am starting a new business, and willfully deciding to use another business’e’s name as the name for my app should be a warning sign to my future clients that I either lack competencies, or worse—I might be unscrupulous.

Even if I do re-brand, I could still register the current name as a .app and sit on it, hoping to someday sell it back to the business to cover my costs for my domains, but that just doesn’t feel right either, and I feel it sends the wrong message about what kind of businessperson I am.

So this means that I am going ahead with the second scenario, finding a new name and then begin the painful process of re-branding the app, only this time I will know to grab the .app domain! 

This situation is just one in the adventure that is starting your own business. This lesson I learned from the school of hard knocks… I’m creating this business on my own, using skills I have acquired on my own over time. Had I professional training in starting a business, such as an MBA, or a mentor, sure I might have avoided this minor setback, but I don’t have formal business training nor any mentors, but this is how I have done plenty of things in my life, and it’s a process I actually enjoy, and am confident I will succeed in this endeavour, as I have in the past doing things “my way”. The more than three decades of success I have had as a self-taught software developer, having even held engineering roles in several Fortune 100 companies, helps me justify that confidence.

I’ve already begun the search for the new name, but now I am faced with another decision… do I register the .ca and the .com domains as well, or just the .app domain? These domain names cost money, incurring an ongoing annual cost, a cost I am not expecting to recover from sales of my first app… so I need to do a cost-benefit analysis to determine if the .com and .ca are worth it… I guess I will begin that process after I decide on the new name! 

UPDATE! I have a new name – KaliTrue, and a new domain as well, KaliTrue.app

My App Name is Taken! :(

(TL;DR I am renaming my app soon… and please sponsor my friend!)

I owe my friend Grant a debt of gratitude… and you can help me thank him by sponsoring him in “The Friends for Life Bike Rally”, which I mention at the end of this long message.

So today, May 13, 2025, I was on Facebook Messenger catching up with a friend I had last spoken with going on six months back! We both have a passion for cycling, and he’s participating in a fundraiser this summer, and I asked him to ping me when the event gets close as I might wish to volunteer.

He started the chat with the obligatory “how have you been” and I responded that things were going well, and I have been busy working on my first iPhone/iPad app and was excited to be in a position to publish it soon. He responded with excitement, writing “You’re doing an app? Cool!” so naturally I wanted to send him a link to the project page. Since I was walking at the time I didn’t have the link handy, so I figured I would just Google “MoniTrue” (the app name) to get my project page and send him the link. That’s when my day changed….

You can imagine my horror/surprise when that Google search landed me on a website, not my own, using the name MoniTrue! I was gutted. My first thought was this means someone had “stolen” my app name, surely, as I had done what I had thought was a sufficiently thorough search back in the spring… to be sure I was choosing a unique name. Sure I found some hits on the word… a gamer’s profile, a service in another language… but no one was using MoniTrue as a business or product name.

My plans for the day had just changed… I would now have to either find a new name, or go after the person using “my” product name, using my existing project page to prove “prior art” and hope they would surrender the name rather than having to get involved in a legal fight. Then I looked closer.

I checked the registration date for their domain, and found out they beat me to it—possibly by just a few months. There would be no fight… they had the prior art… they owned the name, meaning I would now have to find a new name for my app.

Of course I now wanted to understand how this happened… how did I miss this? Well, it turns out the domain name did have a history going back to 2014 when it appears to have been a Russian file sharing site! It appears to have been abandoned after that and squatted until 2022, finally being re-registered by a business in 2024. It’s had so few changes since then it’s still not in the Wayback Machine, and only recently has it shown up in a Google search! When I checked Google, it didn’t show up because Google had not yet indexed it.

I have learned my lesson! When vetting a business or product name, don’t just Google it, but check for the domain as well! I should have known this, but such are the growing pains of business proprietorship. Thankfully I learned this valuable lesson early in my journey… and thankfully I had only invested time into this endeavor.

So now I am spending the day coming up with a new name, and then re-branding the app and everything associated with it. Sigh!

And despite this setback, I am grateful to my friend Grant for accidentally causing me to discover the issue! And so, to thank him, I am asking those of you that have the means to do so, to donate to his fundraising effort by sponsoring him!

He’s riding in “The Friends for Life Bike Rally”, which is “the only volunteer-led ride that brings people together for an inclusive, supportive, and life-changing challenge that inspires much-needed help for people living with HIV/AIDS in Toronto, Kingston, and Montréal.”

If you would like to sponsor Grant, please go to this link which will forward you to his fundraising page: Tinyurl.com/Grant-2025

And now I have to go… I have to think up a new name for my app!

UPDATE! I have a new name – KaliTrue, and a new domain as well, KaliTrue.app. There is also a followup to this post which you can find here.

Thoughts on managing oneself as an independent software developer

When I worked in the corporate world, I would sometimes be sent for training. Mentally, I put the training in two categories:

  1. Training HR wants us to take – includes everything from diversity to hazardous materials handling, but never *directly* related to the task of programming. Usually “soft skills.”
  2. Training to make me a better programmer – from programming languages to support tools.

Let’s talk a little about category 2.

As an independent developer, I now see this category in a completely different light! I used to look forward to such training… an opportunity to make myself a better programmer. My company paid for this training… something I appreciated, but until now I never realized they paid for it in two ways:

  1. Financially – my employer took on the financial burden of my training.
  2. Logistically – my employer took on the schedule hit of my training.

Now that I am independent, I feel the financial hit directly. I always knew there was a financial component to employee training, but it becomes very real when one has to spend money on their own training.

But I am also feeling the “logistical” hit. It is something I was never completely aware of as a corporate developer. My team/project lead took that on. They had to make room in the schedule for this training, for me and every other developer… time that they were *not* developing. Ideally, the training would make the person a better developer, and the schedule hit would be made up in increased productivity… but therein lies a question: how to choose what to train for and for how long, to have a net positive outcome! 

Do you send your employee off to a 2-year program to make them an expert in all things Python (or Swift, or C++)… or do you send them to a one-week boot camp to become better at multi-threading… with multi-threading being the current hot issue in your project.

The answer is obvious… you get your employees trained to fill in the gaps in their knowledge that equate to the gaps in your projects’ immediate needs. And if you’re a good manager/leader, you develop a feel for this. You identify the gaps that would most benefit from employee training, and you also identify the employees who will bring you the most value should they receive said training.

This is a dance I am learning now, but the dance floor is a bed of hot coals! As project lead, I am pushing for delivery of that last 10% of the code to get to v1.0, and in so doing, I am seeing gaps in my team’s skillset (this past 2 weeks it’s been Swift 6 new concurrency model) and having to determine how much I need to improve the team’s comfort with that skill to move forward with the project. Except I am also the development team… and I love to learn… so when I sat down to better my knowledge of Swift Concurrency (especially in light of Swift v6 improvements in that area), I wanted to know it all.

And so it comes back to a recurring theme for my new role as an independent software developer… how do I fill the roles that used to be provided for me through the corporate structure? It’s meant I have had to learn to be an architect, a team lead, a project lead, a manager, a technical writer, all while continuing to get better as a developer in a new (to me) language on a new (to me) platform.

It’s been fun for sure… but it’s also helped me appreciate just how much goes into the creation of a software product. It’s a life cycle, and I continue to learn.

My Security Camera “DIY”

So for the past little while someone has been stealing our mail… yes, our physical mail. I decided to handle this in the way I usually handle these sorts of things… I over engineered a non-solution.

So rather than simply get a locking mailbox, like my sensible neighbour, or even cutting a mail-slot in the door, I decided what I really needed was a security camera system.

After lots of research, I found some awesome free (for non-commercial use) camera software named Shinobi CCTV that will run on just about any common platform (*NIX, Windows, MacOS) and loaded that on my Linux box and attached a Web Camera. After some experimentation I got something working, but the camera was inside, and had a poor view of the front of the house, but as a proof of concept it was a pass! And as DIY goes, this is a win because most of the “D” has been done for me.

Next, I bought a Raspberry Pi from BuyaPi.ca, and tried that but it was less than ideal… the Pi just didn’t have the oomph to work with the camera… nearly 90% CPU with one camera, but it was not the Pi’s fault… I was doing video conversion, video noise suppression, and zoned motion detection, on a Pi… which was never designed to do that much heavy lifting. I either needed a more powerful platform, or a camera that did much of the processing itself before even handing it to the Pi.

After some more research, I bought a “real” security camera, a HoSafe H2MB6A for just $65CAD delivered overnight from Amazon! It allowed me to use hardware acceleration on the Pi, and CPU usage dropped into the teens even with motion detection being done by the Pi! Woot!

After some testing, I was very happy that the system would work. so I ordered a second camera, and today I installed them both… one on my side of our duplex, facing East, and one on my intelligent* neighbours duplex, facing West. Just a few hours and it was working! It still needs some tidying up (the wiring is exposed, for now) but it’s running, and should catch my mail thief any year now.

I have been tweaking the settings since installation, but am very pleased. One of the things I am really impressed with is the low light performance of these cameras… in fact, you can see a video of the test here on YouTube.

Anyway, that’s it for now… with any luck I will post some more interesting things I “catch” on this system… wish me luck catching my mail thief.

*He’s intelligent because not only does he have a locking mailbox, but his neighbour ended up installing a security camera system so he doesn’t really have to.