Swift for 365 consecutive days


Implemented AnyView to type erase for array links. Still working out kinks on linking to pages. 0.5hr

Trying to refactor my menuitem to accept any generic view instead of just my specific type. 0.5hr

New views from abstracted views from yesterday 0.25hr

Abstracted menu into its own class, can be reused now. 0.25hr

Refactor background into separate view 0.25hr

Breaking out classes to create future menu screens. 0.25hr

hide back button & retain gesture 0.25hr

Remove back button from databox 0.25hr

Clean up unused code 0.25hr

Tighten up padding around menu links, fit all on screen now. 0.25hr

Fix background safe limits 0.25hr

Fix cell background color in links 0.5hr

GeometryReader bug, working around size too big 0.25hr

Messing with colour and positioning 0.25hr

Refining animation during menu transitions. 0.5hr

Dependency management in Xcode 0.25hr

quick project building, and couldn't upload last night for some reason 0.25hr

Event hosting today, just small layout design. 0.25hr

Experimenting with transitions 0.25hr

Refine selection in list background 0.25hr

Trying to get highlighting style on row element titles. 0.5hr

Add background to index & abstract index into separate view for keyboard selection later. 0.5hr

Add indexes to links 0.25hr

Slight layout adjustment 0.25hr

Left align links, next step taller height/padding 0.25hr

Created custom menu link items finally 0.5hr

Refactoring menu items to support indexes & a style 0.75hr

Building Data box menu, playing with DragGesture overrides for static menu 0.5hr

Back to Phone UI experiments 0.5hr

Small polish on UI, change font. Think i can call this done for now. 0.75hr

Cleaned up the styling, used some live human rubber duck debugging to figure out what was wrong with the pickers being off-centre. 0.75hr

Fixed bug with spinners changing their own value after their listener got triggered. Should map the values so there's no inconsistency, but good enough for now. 1.0hr

Trying to avoid mapping values one way or other. Will need to try another approach to getting this rounding errors fixed. 0.25hr

Musting around with calculated properties as solution to my conversion inaccuracies. 0.75hr

Debugging a rounding error when converting between km and mi. 0.25hr

Conversion mostly working, besides some rounding errors. 1.0hr

Make both pickers sync now. Missed out on one of the functions I was calling and didn't bother reading the API. 1.5hr

Tried a couple of new approach for passing data back, didn't get anywhere. Did find a WWDC session I need to dig in to tomorrow. 1.0hr

Finally got binding to work. Now need to work on 2-way binding. 1.0hr

Still flopping around with UI Controller binding w/ SwiftUI 0.5hr

Struggling with passing data back from ViewController up to SwiftuI 0.5hr

Added some helper functions to handle pace. Need to work out how to pass data back up to parent view in SwiftUI again. 0.25hr

clean up UIPickers so that I can actually use them for seconds, not minutes/hours 0.75hr

Creating a new time picker for pace converter 0.5hr

Text background colour 0.25hr

Limited time today, messed with quadcurve in GeometryReader 0.25hr

Added white play icons to data box. I think I might switch to SVGs, this is really troublesome to design in code, and probably not worth the juice's squeezer. 0.5hr

Paramterise icon colour gradients 0.25hr

Add text to icons, adjust geometryreader to use correct height & width 1.0hr

Drawing icons in SwiftUI, starting with Data Box 0.5hr

add some more circles, use gradient

made activity circle animated 0.5hr

Copied the Futureland web push in SwiftUI 1.0hr

Start of a new HealthPlayground 0.5hr

Seeing what is available, Swopping materials around 0.25hr

Render a cube 0.25hr

Started a new AR project. 0.25hr

Clean up UI on this CoreML project. Don’t see anywhere else to take this for now. 0.5hr

Set up an InceptionV3 model. Need to think about what else I can do with this. Image is a bit boring 1.0hr

Starting a new project, Seeing what CoreML allows you to do 1.0hr

fixed a bug with cancel button, cleaned up source a bit. I think this project is taken to logical conclusion, can start to be used. Also played with iMovie for output. 1.0hr

Incorporated blurb into text. Need to work on cleaning up UI next 0.25hr.

Added api key persistence. Need to incorporate blurb next. 0.5hr

Disable capture button during preview screen 0.25hr

added "enter to submit" for text blurb 0.25hr

Dealing with AppStoreConnect 0.25hr

add keyboard dismissal gesture, change text view to a text field, still need to hook up text field to API submitting 0.5hr

Added a cancel preview button 0.5hr

hook up modal dialog to upload, dismiss on submit 1.0hr

clean up modal and preference view 1.0hr

Moving around modal view elements 0.5hr

Dismiss keyboard when hiding dialogue, cleaned up interface around hiding dialogues. Need to work on cleaning up preview modal 1.0hr

API key set, need to dismiss keyboard after dialog dismissed 0.25hr

Dismiss preference view when API key is valid 0.25hr

Fixed slack layout, now need to dismiss dialog when API key is entered. 0.25hr

auto layout :disappointed: 0.25hr

More layout adjustments 1.0hr

Image preview working, now to clean up lay out 0.5hr

Slack API key preferences, token subbed out now, need to wire up form. 0.5hr

Adding modal for Slack API key 0.25hr

Debugging xcode views 0.25hr

adjusting auto layout with modal 0.5hr

Experimenting with not putting secrets in code 0.75hr

Adding image view to reflection modal 0.25hr

limited energy , aligning modal 0.25hr

tweaking modal 0.25hr

Adding another view to add a description 0.25hr

Lektor site for Mouthbreath 1.0hr

Used holiday time to push this through the Turkey gate 1.5hr

Simulator screenshots 0.25hr

application store requirementsssss 0.5hr

layout adjustment 0.5hr

Properly remove activity spinner when upload complete. 0.5hr

Show progress indicator, but need to work on getting it to stop proper 0.25hr

Working on a progress indicator for uploads 0.5hr

Camera now successfully posting to slack channel. 1.0hr

Xcode upgrade to try to fix Swift Package Manager dependency issues 1.5hr

Posting to a slack channel now 0.5hr

New project for topical camera 1.5hr

Planning next project, maybe port one of my Swift Shortcuts for food tracking to SwiftUI. 0.25hr

Finalising changes to styling with what I have access to in this Xcode version. Pushing to beta and will test next couple of weeks before publishing. 2.5hr

Styling config theme on mouthbreath 0.5hr

Swopped out file, think this is done. Meets my needs of needing to convert HEIC to JPG, on TO next project. 2.0hr

wiring up my playground to InterfaceBuilder now. Outputting files after I figured out I had to turn off AppSandbox. Now to turn it on and get the right entitlements etc. 2.5hr

Re-learning interface builder since I can't run SwiftUI on my mac, and I don't want to upgrade 1.0hr

Converted file now exported to file as well. 2.0hr

First pass of image conversion from HEIC 1.5hr

Was thinking about SwiftUI on macOS, but I don't have easy access to a Catalina machine right now. AppKit it is 0.5hr

Starting a new macOS application 0.5hr

New test builds 0.25hr

re-upload of yesterday's since accidentally deleted - style updates 0.25hr

Another swomped day, just more copy. 0.25hr

More copy 0.25hr

Adding some informational copy 1.0hr

Unstretch logo, make about screen a scroll view. 0.5hr

add application icon to about screen 0.5hr

Clean up config view 1.5hr

limited time today, just a quick jump 0.05hr

Added attributions 1.5hr

First cut of a config screen 1.0hr

Reverting update text to give better feedback of last reading 0.5hr

Finished ability to remove cities. A bit hacky, but fine for now. 1.0hr

Starting skeleton for removing a city 0.25hr

Fixed a bug in iPad view and got my first External TestFlight user & build approved 1.5hr

Moved my main model to use a DTO, removed JSON decoding/encoding code 1.5hr

Uploading builds to TestFlight, though hung up on rejected builds for some reason. 0.5hr

add "enter" to search 0.5hr

Refactor search results to use a DTO to clean up encoding/decoding to JSON. 1.5hr

Progress on UI for adding cities 0.5hr

Save searched cities, make certain air quality indicators optional. 1.5hr

parsing search results properly now. 1.5hr

Extend add city view a bit. 0.5hr

added a new card, scaffolding model for search results 1.0hr

Add an app icon, refresh favourite city data on launch

Jumped through all the hoops to get TestFlight working. 1.5hr

added pull to refresh that I might swop out tomorrow 2.0hr

Added state saving, so now previous results are saved between launches 2.5hr

added a favourite button, and a way to launch to favourites. no state currently persisted between launches yet though. 1.5hr

Added last updated field. 0.5hr

Visual revamp, change fonts, running it on an actual phone now. 0.5hr

Added range-based view that changes colour based on value. 0.5hr

Added a map view, refactored seed data for initial list. 1.0hr

Changing detail view a bit, adding more properties 1.0hr

Pull & display PM2.5 AQI data for each city now. 1.0hr

Pulling live data from API, working on pushing it into model. 0.75hr

Initial UI skeleton before pulling data from API. 1.0hr

Missing dongle to connect phone to laptop, starting a new project in meantime to pull AQI. 0.5hr

Restyle edit screen, will start testing this on real phone now that I have an iOS 13 seargent now. 0.25hr

Add creation date to entries. 0.5hr

Editing logs, though there is a bug with the edit button only working once. Downloading Xcode GM to see if it fixes. 1.25hr

Adding new entries no longer changes order randomly -- since I am using an array of keys. 0.5hr

Implemented an "add entry" button. Much easier in Flux way. 2.0hr

Got a detail view up after a heavy refactor -- now detail view is being pulled from Flux state. Next up is tidying up view & re-implementing editing. 1.0hr

DRIED EYES, taking a rest today 0.0hr

Shuffling things around 0.5hr

Shifting things around, broken again. 0.5hr

FINALLY getting a successful build. Data starting to flow in Flux-y way. 1.5hr

Continuing on main content view move to Flux. 0.15hr

Traveling and refactoring. 0.15hr

Working through compilation errors while refactoring. 1.0hr

Finding small time when I can to refactor more. 1.0hr

Lost some work in refactoring, backtarcking. 0.5hr

More flux conversion 0.25hr

Still refactoring, and in the middle of travel/working. Flux makes mental gymnastics easier on data flow. 0.25hr

Migrating everything to SwiftUIFlux 2.5hr

Can finally add & delete entrees. Restructuring more since my navigationlinks are broken again. 3.0hr

Starting to implement a cloudkit data store 0.25hr

Finding brief time to refactor, downloading new xcode beta to try to alleviAte some issues hitting. 0.25hr

Pulling models into separate files 0.5hr

Tweak views some more while looking at object persistence. 1.0hr

more clean up of views 0.5hr

update edit screen layout 0.5hr

New posting time, trying to rework how log entries are pulled still. 0.75hr

Stuck trying to combine index trick with accessing a dynamic list vs. static. 0.25hr

Working on getting an "add entry" button, though hitting some limits of the workarounds I have in place. 0.5hr

Can now delete entries. Took some hacking to get around the beta-ness of SwiftUI, but learning to work around it is fun in itself. Also looking at ways to make these HFO less monotonours. 1.0hr

With some help, I have improved data flow, using an external data store object and Published/ObservableObjects so that my views are updated when data is. 1.0hr

Trying to get my subview changes to a model to apply upstream. Not there yet. 1.5hr

Cleaned up the views a bit, work on bug with log details not getting saved when going up view hierarchy. 1.0hr

Got the bindings right for the detail view. 1.0hr

Working out an editor - looking at SwiftUI binding paradigms again. 1.0hr

Added an edit view, and started looking into CloudKit. 1.0hr

Got XCode updated, added a detail view. Need to add some backing to the model next. 1.0hr

Fighting xcode beta installation, wasn’t able to even get it running today. 1.0hr

Getting back into SwiftUI, this time on Mojave. Creating base of a log entry bit that I normally use "shortcuts" for 1.0hr

More searching on prior work for hand detection. 0.5hr

More research on hand detection 0.25hr

Looking up frameworks for multitouch 0.5hr

Researching what options I have for detecting which hand is using the trackpad. Watching this video has been a good source of inspiration. 1.0hr

Started a HFO backlog for myself and spent some time thinking about projects I might want to do. 0.5hr

Add toggle button based on current layout. This wraps up as far as I want to take this application for now. 0.5hr

Still fighting with AppKit on showing a NSMenu and using an action on NSStatusItem. 1.0hr

Reading blog posts on the bug in NSMenu. 0.5hr

Think I hit a bug in AppKit where you can't both run an action on a status bar and have a menu. Need to figure out a workaround tomorrow. 0.5hr

Got into completion handlers for a bug where menubar item status wasn't updating at the correct time. That was still too early, so tried moving the update to when the menu is open, but still trying to get that to work 1.0hr

Update the current keyboard in the menu item after layout change now. Last item doesn't make sense to keep, so next to chop off. 0.5hr

Can read the current keyboard's layout now. Will maybe add a toggle, keyboard shortcuts, and a way to select the current keyboard. 0.5hr

Now able to read the plist. Next up is picking the value I care about and building that into a toggle.

Trying to read a nested Plist. Removed sandboxing so that I could get at the /Library plist, just need to get at parsing it now. 1.0hr

More dive into blog posts on too-similarly named attributes - "keyboard layout". I think I'm getting closer though. 1.0hr

Looking up more carbon APIs. Trying to add a toggle button, but first need to detect active keyboard layout. 1.0hr

Linked menu items to run the selected AppleScripts now. Right now, you have to pick the layout. 0.75hr and 0.5hr on the Final Cut Pro pieces

Created a menu icon application with some filler items. Also tried FCPX, but struggled a bit with keyframing the animation. 1.0hr

Able to run AppleScripts now -- had to make a workaround to avoid Xcode corrupting my scripts. Can now run the script to switch to hard-coded ANSI. Next up is a way to detect current layout and build up some GUI. 1.0hr

My applescripts are getting mangled for some reason. I guess Xcode cannot read them, but copying them out of my project keeps them mangled too. 1.0hr

Got into a hole of trying to load files. Lot of things to read on the frameworks. I need to sit down tomorrow and give it another go. 1.0hr

Have inline applescript running, but I want to run them from external scripts so I don’t have to put everything into the Application. 1.0hr

Modified an AppleScript to swop keyboard layouts. Not a fan of using AppleScript, but doesn't seem like changing plist values has any effect. 0.5hr

Looking at setting keyboardType values using plist buddy utility, but unfortunately this doesn't change the value used by the system. I may have to fall back to AppleScript to set this somehow and trigger it via Swift wrapper. 0.5hr

Starting a new project to create an "keyboard type". I am having some issues with macOS and wanting to frequently switch between layout types, so reading about old Cocoa APIs that go back to macOS 8.

Made a gist for rotating an NSImage 0.5hr

Finally figured out the positioning for the view. Had to go through a lot of different options, so I think I'll do a writeup tomorrow of what I went through to help myself understand. 1.0hr

Looking at using NSView animators but things aren't exactly behaving how I like. UIView seems to handle things a lot more elegantly. 1.5hr

Still trying to work out how to flip images. I initially tried just flipping the NSView, but having issues with keeping the image centered and no luck with moving bounds/frames around. Did some reading on overriding a `drawRect` method, so will give that a try next. 1.0hr



Sorted putting UI code on main thread. Trying to correct orientation of the emoji view, but fumbling with how to set bounds or orientation first. 0.75hr

Reading about how to ensure dispatch on the main thread today. Initial passes didn't get anywhere, and actually broke what I had from yesterday. 0.5hr

Passing in image view to the emojer vision now. Not fast enough for live view, but I am happy with it. 1.5 hr

I was able to save a screenshot from a video feed now. Next I can try passing that to another function. I read about Metal for the first time today -- might play with some shaders on the camera. 1.5hr

Looking at delegate stuff but need to restructure what I have since getting error while trying to get feed from camera as an image.

Only had time to do some research today. Looks like I need to re-architect things a bit to get the iSight feed into NSImages.

Just fixing up the frames today

started port of the emojivision to nexstep instead of UIKit, everything is kinda smooshed, but it looks mostly right?

Working on a macOS application so that I can try making a camera filter. I have the webcam set up, next to porting over code that writes to a UIImage to work with NSImage.

Messed with @gabrieloc's playground. I remember now that Playgrounds is really unstable, but manual playing helps. I also learned that you can't access camera from playground in Mojave, so if I want to do a camera filter, I'll have to either move to macOS or iOS and all the permissions that entails.

Sporadic internet, so post times are going to be a bit off, but have been looking at the docs while I have moments.

Playing with scaling effects and different shapes. I really like how personable this one feels.

Added an animation to the new card that spawns. The example I have been basing off of was using closures and that's something I need to work on understanding better.

More gestures, this time with moving "cards"

Played with gestures today. I kind of wish I could install the beta on my phone, but not ready for that yet. I think I want to start making my own images to use with these experiments.

Experimenting with some button styles and icons& passing state in between views today. I am having an issue with Catalina and screen recording, so just a screen shot today.

Just being dumb today since I'm a little low on energy from working. Still had fun, though -- and has me thinking about how to quickly iterate on some storytelling.

Still fighting with runtime errors in swift. I think I'll set this project own and start with a new one tomorrow. Maybe something based off one of the WWDC sessions I haven't looked at yet.

Today's HFO isn't quite as exciting. Spent a few hours trying to figure out live JSON pulling. There's something I'm missing in my architecture that's not clicking with my brain yet. I'll give it another go tomorrow with a rested mind.

Spent today cleaning up the Citibike tracker from yesterday. I fixed some of the models to work with the real data. I've also added in a map view. It's really easy to get stuff working with SwiftUI -- I can't believe how much I got done with so little work. Next up is getting it to pull stuff live from the API.

Messed around with the CitiBike API, but spent most of the time wrestling with how to build up models from JSON and dealing with data. Fun stuff!

Experimented with drawing with parameters in SwiftUI today. Biggest thing I learned was about `.frame` which was helpful in resizing how big things can go.

Built a transaction list modelling a budget software I had done in Swift, this time in SwiftUI. Had some hangups pulling data from JSON, but got past by switching to Strings for now.

Whoa, this looks interesting. So can you...
justin Swift