Week #735

Friday, March 14th, 02025 at 14:41 UTC

For one of our projects, we’re working on some VR/AR experiences. As part of this, we are displaying 360 images “in the round”. As simple as they are, these images are easy to produce and very immersive! As a next step, our client asked to annotate parts of the image. The text can be baked into the image. Using an image editing software, it is possible to open the file, add another layer and type what is needed. The issue comes with the distortion. Luckily we’re mostly tracing with minimal text labels. As a first pass, it worked well.

For web-based projects, our goto stack is usually Django on Heroku. For a different client, they have so many entries that generating a table now times-out and throws and error. Heroku only lets you run a process for 30 seconds before it terminates, which is both good and bad. For us, it is time to refactor the code! Luckily, Django has Pagination built-in. We switched over to that with minimal changes and it works great. The downside now, is that we had client-side javascript filtering. It was much faster to use a regex on <td> values than to re-fetch any filtered data from the server. But, since we have now chunked the data into pages, the client-side filtering only works on the visible data, not all of it. You win some and you lose some. We’ll probably go back and increase the number of items on a page without timing out, but they will still have to filter manually over each page and combine any results manually.

On Wednesday, we had our fortnightly sync about some new calendaring ideas with a few friends. These are very loose, exploratory meetings. Once things are a bit more solid, we can show-off what we’ve been up too. This is a great example of having a product that scratches your own itch, no pressure deadlines and allows you to explore a bit more things we find interesting at our own pace with feedback from like-minded others.

On Thursday, we started yet another survey. We closed out all the February surveys last week, have an ongoing staff survey and now started a private parents survey. We’re very mindful that in one month we hit all the Easter holidays. That means we need to plan our communication cadence with the participants in a way that makes the best use of the time.

We’ve been dabbling with Apple’s SwiftUI programming language for projects. It is great, easy and quick if you want to replicate Apple style apps. If it is a native-looking list of items, you can knock that out in a very short amount of time! Luckily, those are the kinds of utility apps we like. This week, we explored more button styling to keep with all the native controls in SwiftUI, but break more out of the default look. As part of that, we explored adding sound effects and ambient music to the app. It turns out that the playback isn’t that difficult, but managing the state is a bit more tricky. The other thing to realize is that there are (atleast) two ways to play sound effects, one easy, one that takes a bit more code. The easy way you can use the built-in library of sounds, but it honors the physical “silent toggle switch” on the phone. Using an audio player takes a bit more code and you need your own audio files, but it will playback no matter the ‘silent mode’ state.

Exchange Rates

We do a lot of work for companies in the USA and in the next few weeks and months everyone’s going to feel the hurt. On March 14th, the exchange rate has been as low as it has ever been in the last 12 months. That doesn’t bode well for our bottomline getting paid in dollars.