Still amazingly relevant today: Clarke and Dawe - The Energy Market Explained. I guess that means nothing has changed in 5 years, and the Aus Liberal Party is still a party with very little public policy.
2022
A recent article I wrote was published: SwiftUI and Structured Concurrency
2021
A succinct blog post about the Tact Public Beta from its founder: https://jaanus.com/tact-public-beta/
A project I’ve been involved with since March has just launched their public beta! Check it out at www.justtact.com
If you’ve ever wondered what SwiftUI view preferences were look no further! Take a trip through the daisies with Buzzy: www.raywenderlich.com/26733845-…
In regards to growth marketing, surveilance capitalism, algorithmic moral-panic-driven profiteering I think there’s kind-of Darwinian evolution of our kids’ immune systems. My (now adult) kids responses to all this nonsense really brightens my day.
The axiiio nano camera robotics system is back, baby!
Indiegogo > October 19, 2021 www.axiiio.com/view/laun…
We’re offering 4 kits this time, motor encoder has been redesigned, software has been improved. It’s better than ever.
Finally achieved my full vaccine potential!
Apple Maps shows a new message I’ve not seen before asking if I want to switch routes to save 2 minutes. When I don’t answer BECAUSE I’M DRIVING, it does it anyway. I realise late that it’s now taking me to the freeway, which I was trying to avoid. I Keep avoiding the freeway and now it takes me on a wild ride adding 15 minutes… well done.
Sometime mobile software UIs feel like they’re just activity indicators all the way down.
A few years back there was a backlash against job descriptions seeking rockstars, or ninjas. And that was a relief. Now, I think we’re entering a post-startup era; I keep seeing job descriptions emphasising low-ego engineering cultures. Low ego seems to be the new value statement describing the essential ingredient to good engineering, replacing the rockstar?
The tech culture attitude that you have to get on the train or else get left behind is horseshit. Never met a programmer who was unable to get up to speed about something new, when the need arose.
My newest article is up on raywenderlich.com: Getting a Redux Vibe Into SwiftUI www.raywenderlich.com/22096649-…
The bit I’m most proud of: “Usually, state management code feels like soggy bread held together with duct tape.”
Got the Jab this morning!
Pffft Bill & Melinda Gates are such noobs, bailing out at 27. Kris and I are coming up to our 28th!
Don’t know about you but “Get started with Trello Workspaces: add your Personal boards to a Workspace now, or it’ll happen automatically starting April 24th.” seems vaguely threatening?!
Making the example app for my next article about using a Redux-style architecture in SwiftUI. Can you guess what the app is called?
Discoverred this morning that there are no posts on the axiiio Facebook page (https://www.facebook.com/axiiio) and we can’t post new ones. That’s because Facebook has classified us as a “news” site and currently blocked in Australia! WTH?
2020
Hey I wrote a CoreData tutorial: www.raywenderlich.com/14958063-…
This whole tutorial is the result of satisfying a strange compulsion I had: starting a tutorial with the one word sentence “Fireballs!”
A Haiku to social media:
Instagram accounts cross paths, following, liking algorithmically
I am loosing my mind…
Facebook Management UI is like some Crazy, Hostile Text Adventure Game You Can Never Win
Great article by Independent Australia :independentaustralia.net/politics/… Julia Gillard gets far less credit that she deserves.
Was woken up last night by an argument I was having in my dream: you can’t apply the practice of software metrics to a marriage! You’re only measuring one dimension, growth, and you don’t know where that’ll come from! Truth bombs?
Deep breath, crossing fingers… holy shit… this thing that’s been my life for nearly 2 years is on Kickstarter!
axiiio nano – Flexible, Reconfigurable Camera Motion Control www.kickstarter.com/projects/…
Check it out!
Checkout ProMoCo! This is the app I’ve been working on that drives the axiiio nano Camera Motion Control System. www.axiiio.com/view/arti…
RIP Hamish 2005 - 2020
Petition EN1938 - Royal Commission to ensure a strong, diverse Australian news media
Just signed K-Rudd’s Murdoch News petition: www.aph.gov.au/petition_…
Murdoch media is a blight on the world, divisive and repugnant; causing misery and destruction purely for political and financial gain. And I’m pretty sure we can blame Murdoch for the NBN fiasco.
newsroyalcommission.com
#MurdochRoyalCommission
My son sent me this, showing the Australian LNP holding fast to this moronic line about the sun and the wind…
We're on the road to Kickstarter!
I was really happy with this paragraph:
” A well-designed haptic experience also takes time. You need to test many subtle variations, but it’s a hoot to be able to say to friends that you just spent the afternoon designing the perfect haptic experience for a crocodile eating a pineapple.” www.raywenderlich.com/10608020-…
My latest raywenderlich.com article is up! “Getting Started With Core Haptics” www.raywenderlich.com/10608020-…
Highly recommend the email newsletter Big by Matt Stoller. The latest is good for understanding the roots of what’s going on in the US right now: Corporate Power, Protests and the Breakdown of a Social Contract… and probably in Australian politics too.
The Apple Combine framework is like taking the red pill; the more I use it the more I want to see how deep the rabbit hole goes. So far it hasn’t effected build times, app performance or memory usage in any way, and I feel like I can solve so many problems with it. In fact there have been cases where it’s improved app performance once I removed home rolled async solutions - especially when removing OperationQueues and custom Operation subclasses, surprisingly!
My 2nd article for RW is up: www.raywenderlich.com/7738344-m… an update to an older MapKit intro.
The axiiio homepage has been updated with some sweet new examples of rigs and camera work: www.axiiio.com
The Axiiio Kickstarter launch is getting closer! www.axiiio.com/view/kick…
Checkout this funky Axiiio video https://www.youtube.com/watch?v=6AFKa-2GGYo
UILayoutGuide
where have you been all my life. If you’re making a complicated layout where you want the some parts of the view to display under the safe areas to the edge of the screen, but other parts to sit within the safe area, UILayoutGuide
is a good friend to have.
2019
It’s finally out: the vid explaining exactly what the Axiiio motion control system can do for filmmakers youtu.be/55h0l3ZVd… This is what I’ve been building an app for this year!
Suddenly concerned for how many Swift files I have included an erroneous import Foundation
statement!
Finally started using GYB (https://github.com/apple/swift/blob/master/utils/gyb.py) for code generation. Wish I had started earlier!
SwiftUI stole the spotlight at WWDC 2019, but Combine, diffable data sources, and collection view compositional layouts, fix a huge amount of annoying things in UIKit. Really enjoying getting to know them all.
Haven’t had one of these in a while. Trying to use @Published
from Combine
with a tuple property causes a segmentation fault: 11
in the compiler. Eg. @Published var value: (Int,Int) = (0,0)
will cause a segfault in a method where you update that value: value = (intVal, intVal)
Ryan Singer is spot on in this thread about product ownership twitter.com/rjs/statu… “playing time Tetris” is my new favourite analogy!
My first tutorial on raywenderlich.com is out! It’s all about accessibility and custom controls. www.raywenderlich.com/4720178-i…
Axiiio sneak peak, showing the footage captured is up here: youtu.be/2bDDGwFwh…
My tip for SwiftUI: if you find your list of @State
variables is growing long, admit it: you’re actually building a view controller. Stop that! Start breaking it up into smaller View
components.
First impressions of using SwiftUI for real
Damn, just noticed in tomorrow’s forecast, Shifty Jelly announce the Pocket Weather servers are finally shutting down Dec 31st 2019
Some very cool footage should appear here soon… www.youtube.com/channel/U…
My new favourite Google search query argument: -site:medium.com
. What a breath of fresh air.
If you’re going to use UIDocumentPickerViewController
, and also support opening files from the Files app, and now the home screen on iOS 13, it’s best to just use a UIDocument
subclass. Even if it’s simple data. UIDocument
handles the security-scoped URLs and file coordination, saving you some potential frustration.
Loved Fleabag. What an astoundingly good bit of writing it is.
Hoorah! In Swift 5.1 omitting return from single line functions also applies to computed properties. It’s the little things…
If you’re using the Network Extension framework and are getting a crash building on Xcode 11 running on iOS versions pre-13: dyld: Symbol not found: _NEHotspotConfigurationErrorDomain
there’s a messy workaround described here: forums.developer.apple.com/thread/12…
Trying to track down my Grandfather’s WWII service medals and record of service book.
Here’s a mystery! I was searching for details about my Grandfathers WWII service in Tobruk today; he was Private Stanley Herbert Seiver, serial number: WX9870. I stumbled on some photos of his medals and service record on a Flickr photo stream:
This was uploaded to Flickr in 2015, with a comment saying “Found on eBay”.
Turns out they’ve been missing since 2001, and no one has seen them since. I assume sometime in 2015 they were sold on eBay.
Not sure what to do next…
For years I’ve been wondering where the track “When the tigers broke free” came from, that’s heard at the start of the Alan Parker, Pink Floyd: The Wall movie. Because it’s not on the Pink Floyd album.
Just found it on The Final Cut album! In all those years a simple search would have probably found it for me :P
My Objective-C is getting a little rusty… * looks up NS_ENUM
syntax…*
Good read from Dropbox about the cost of sharing code between Android and iOS: blogs.dropbox.com/tech/2019…
I’ve never fully bought into the notion that building native apps on Android and iOS is a waste of engineering capacity because you’re building the same thing twice. I’ve no experience to back that up, just a feeling that native development is the most straight forward way to get a product made. Straight forward to maintain, support, hire developers for. You’re not swimming against the current of the platform improvements that are constantly delivered by Apple and Google.
Rework (23 July) is a great episode for people struggling with building complex software products in teams overcast.fm esp. if you’re over the way agile is done in a lot of places.
Working in 2 week sprints was supposed to provide a realistic perspective on development capacity, to enable better product prioritisation decisions. In my experience all it did was allow pressure to be exerted downwards to the developers; always the question why sprint targets were missed.
Even with all the battering rams and canon balls in my arsenal, I could not storm the gates of Sleep Castle.
despite my many invitations, attempts, offers of support; my love of sleep remained unrequited
The night: a tempestuous ocean; sleep: an island too far
Sleep eluded me last night; paraded it’s witnesses and suspects through my head; by the morning it was still at large.
I am deliriously unslept!
I feel like I’ve finally got a handle on how Auto Layout works with UIStackViews, how stackviews get their intrinsic content size depending on the set alignment and distribution properties. Luckily, just in time to be able to toss it all away for SwiftUI :D
My Son’s dog, a little white terrier, was leaving my office. He stopped in the doorway, turned to look back at me, farted noisily, then continued down the hall. Now I’m racking my brain for what I might have done for him to take offence. An acrid cloud of tension lingers in the air between us…
Wow, checkout What’s New in Swift developer.apple.com/videos/pl… from #WWDC2019. Feels like Swift suddenly got super powers with Swift 5.1. Also shows how SwiftUI is a direct product of these new features.
Considering SwiftUI, now I see how much wasted time was spent on intense discussions about things like, should you pass your model object to your UITableCell
subclass to set its properties?
#WWDC2019 So. Much. New. Shiny. My. Head. Exploding.
Kurzgesagt is one of my favourite things on Youtube. “The Side Effects of Vaccines - How High is the Risk?” youtu.be/zBkVCpbNn…
Top Tier CoreAnimation Tip in this WWDC2014 preso developer.apple.com/videos/pl… and ronnqvi.st/multiple-… Commit a change to a layer property, and also animate from the difference to 0 with additive = true
. Smooth. (New to me anyway :))
No one warned me that being a contract software developer, also means schlepping equipment up a mountain…
Even more Axiiio field testing; this time in the old convict settlement ruins near Port Gregory, Western Australia
Garnet grains on a beach near Kalbarri, Western Australia. Looked like a dusting of pink sugar across the beach.
Jumping on the immutable state bandwagon (with a nod to Redux) in an iOS app, suddenly opens up a bunch of opportunities for testing. I can save and load an app’s state to/from a file, which is super handy.
Well this is annoying. Same Swift code literal is correctly CGFloat
outside of an array, but within the array it’s an Int
… !? Also the 1.0
on the next line becomes a Double
, :slaps_forhead:.
It’s only when you’re sharing code between platforms that you discover things like on iOS char
is signed, but on 32bit ARM systems like Teensy 3.x char
is unsigned. My brain is exploding trying to understand the consequences.
Working out of Axiiio labs this week. Working with embedded devices is a whole new world from working on a big software stack. Lots of fun though.
The new Xcode lldb v
command seems a lot faster, but at first try I don’t think it can see type extensions. po
sees the method in my class extension but v
doesn’t?
Whoa… if you know Objective-C, you’ll appreciate this method name I just found in UIFoundation
:
-[NSCoreTypesetter _NSFastDrawString:length:attributes:paragraphStyle:typesetterBehavior:lineBreakMode:rect:padding:cgContext:baselineRendering:usesFontLeading:usesScreenFont:scrollable:syncAlignment:mirrored:boundingRectPointer:baselineOffsetPointer:wantsTextLineFragments:applicationFrameworkContext:]
Hooray for Swift 5! Immediately had a use for the new Result type.
Xcode upgrade, Swift 5 migration went surprisingly well. All I had to do was upgrade carthage and build the project, no changes required. Lovely when that happens.
This is Apple admitting their previous CoreData examples were rubbish:
“Previously in iOS, the Core Data stack was typically initialized within the application delegate. However, doing so causes a significant amount of code to get muddled in with application life cycle events.”
My son said to me the other day he wonders why when there are so many companies selling content why business models are only ever ads or subscriptions… good point!
Cleaning out old cupboards and drawers is like suburban archeology. For example, in a drawer filled with junk I found 5 hole punches. I think I can draw a pretty accurate conclusion that we’ve had the need to punch holes in paper approximately 5 times in the last 10 years.
Woo! published my first CocoaPod: Shawshank. A small but nifty Swift unit test framework for stubbing network calls. github.com/atetlaw/s…
#SurryHills
Dim Gaggle of UberbEats riders outside Chur burger all bikes, backpacks, and impatience
Muted terraces signaling to huddled pedestrians outrunning the rain finding sporadic shelter under the Sober trees
Love in the time of unit testing
Here it is: boardgamegeek.com/boardgame…
So many evil cats! Played Root for the first time. Really good fun. Each player has different rules, but somehow it all works magically.
Currently experimenting with CoreLocation and extending types to provide Measurement
values: gist.github.com/atetlaw/0…
Love this Apple documentation for magnitude: developer.apple.com/documenta… TL;DR: “use abs(_:), magnitude blows”
Hey I might be a bit biased, but… www.inc.com/brian-de-…
Nothing says you love your dog more than waking up to find you still have a dog. Despite being up at 5:30am mopping dog shit that had been walked from one end of the house to the other.
I’m disappointed that the non-meat hamburger companies haven’t used, what I think is, the obvious slogan: “I can’t believe it’s not murder!”, or, if you prefer, “I can’t believe it’s not slaughter!”
Hooray! New Buke & Gase album www.bukeandgase.com
Uppercase UUIDs on iOS
If you work in a cross-platform company, you realise iOS is the only one to output upper-case UUIDs. Which is odd. Apple purport to respect RFC 4122, and while that states uppercase characters are within the valid set, it also states “The hexadecimal values “a” through “f” are output as lower case characters and are case insensitive on input.”
So I’m thinking Apple’s implementation is wrong.
Opening the Mac OS Books app to check the spelling of Hugh Howey’s name, I clicked on the book and got this insane error dialog. “Reinstall iTunes” .. seriously?! Reopening Books fixed it.
Haven’t read a book in a while and I finished 3 books over Xmas: The Wool Trilogy by Hugh Howey. Cracking good post-apocalyptic tale.
2018
So my dog just walked into the office and belched… and that’s how I knew she’d been in the kitchen bin again. What a morning I’m having.
I awoke this morning with a stunning realisation: I have never heard a cat fart.
In Swift what is the nature of an optional Void
? If it’s .some
then it’s nothing, but if it’s .none
then, is it everything?
One of my eldest sons said to me this morning “I think one of the best parts of parenting must be trolling your kids”. I can’t begin to describe the feeling of satisfaction, and yes, pure joy, that I experienced hearing those words; like I did something right as a parent.
Swift enums are a thing of beauty and wonder
I’m building a document-based app, and having to setup a seperate Xcode framework target for the document model code, so it can be used in the app and the app extensions. Turned out to be a really nice way to segregate an Xcode project.
Dining Room Table Project - Part 3
Working out the best way to fill the holes, cracks and gnarly bits with clear expoxy resin
Dining Room Table Project - Part 1
Selecting the wood: some lovely Western Australian Marri boards