SameSame

I always knew that working on this app would take a lot of time but I definitely underestimated the amount of things I would need to build before a solid public release. As a long time user of macOS, I never really thought about all the tiny features each app has, things like menu bars, keyboard shortcuts, Touch Bar support and so forth.

Milestone

Another interesting thing happened recently, I used SameSame to help debug SameSame which felt pretty surreal. For me, it harkens back to the WWDC ‘16 presentation where the presenter showed Xcode Visual Debugger debugging Xcode. I tweeted about it later that day and sometime after that, I found this photo inside a Cupertino office where I was interviewing.

Performance

I’ve spent most of the time debugging the app with preset test data that I forgot to use real text files to test performance. Turns out that the app was really bad on performance with code source files. This lead me to firing up Instruments.app and identifying some memory leaks and unnecessary looping. Turns out that drawing a lot of boxes and shapes in draw(rect:) is pretty expensive (duh, Andyy).

New Designer

I’m super excited that Corey Ginnivan came on board to help with the visual experience and design for the app. I like the fact that we’re both two people from Perth, Australia which can help bolster the image that yes, awesome stuff is being made in Perth too. Take that Melbourne and Sydney.

New Logo, App Icon and Website

SameSame

A modern text diffing app for Mac

A brief update on SameSame

I’ve been meaning to provide an update on my macOS development endeavours for a while. Progress hasn't been as efficient as I was hoping when I first started this but progress is progress in the end.

macOS development been quite a learning curve, Apple documentation is pretty bad and almost no one publishes AppKit/macOS tutorials online. I’ve had to rely on the awesome AppKit community Slack channel to get my questions answered. If it weren’t for them, it would make the process all the much harder.

Some features I’ve been working on:

  • Dark mode

  • An improved diffing engine

  • Sidebar / History

  • UI styles: Split, Stack and Pair

  • Test driven development for the new diff engine

20-01-20_SameSame.png

Introducing: SameSame

The macOS text diffing app I’ve been working on has started to come to fruition. I’ve also decided to call it SameSame. It comes from a Southeast Asian/English phrase , “Same same but different”. I like the fact that it contains the sound “diff” and I can use the letter S as a logo — It’s a pretty aesthetic letter.

The learning curve hasn’t been too difficult, there’s a lot of overlap between UIKit and AppKit/Cocoa which makes things a lot easier. However, it can definitely make things much difficult because I’ve been used to things working a particular way on iOS and assuming that it should/would be the same on macOS. Good tutorials are incredibly hard to find as well, it appears that almost all the macOS devs stopped writing tutorials once iOS gained popularity. I purchased Big Nerd Ranch’s Cocoa Programming for OSX which is written in Swift, so that should make things slightly easier I hope.

Even though the updates on here are few and far between, I’ve kept a general log on my Twitter feed each time I reach a minor milestone. You can check it out here: @andyyhope “App Update“

The latest milestone I’ve reached has to do with the line:line mapping between the text views. I draw boxes in a middle “gutter” view to make it easier for the user to map how groups have changed between versions — it’s marked in the darker blue below.

AppUpdate.png

So I guess I'm Mac developer as well now?

About a week ago I really felt like I needed to keep up on my Swift skills, I haven’t wrote much in the past year and figured it would be a good idea to have a hobby app to keep myself up to date. I’ve also been pretty curious as to what it’s like to build a Mac app so why not hit two birds with one stone and develop a Mac app in Swift?
So now I’ve started writing one and the APIs really aren’t that different. I’m building an app which compares two different text files and highlights the differences between the two. I chose to do this app because I’ll have to solve some CS theory problems as well as optimising for the best time/space complexity which I’m a pretty big fan of.

As you might’ve guessed, the app involves a lot of text editing and the APIs are practically 1:1 between iOS and macOS in that area. It’s been pretty fun so far and I hope to keep the momentum going.

MacApp_4.png

What I've been up to

It's been a pretty wild ride working at Facebook. The bootcamp experience was amazing and provided me the ability to ramp up to the engineering culture, which is pretty intense (but in a good way). 

After finishing bootcamp, I chose to join the UI Infrastructure team. We work on solving UI engineering at scale, such as emojis, unused asset stripping, asset cataloging, screenshot tests and a bunch of other things. I'm fortunate to have chosen a great team of reaaally smart and kind individuals.

I joined as an iOS Engineer, but because of the kind of work my team does, I don't really touch much Objective-C these days, and I don't even write Swift at work anymore. Instead, I've been learning and writing a lot of Python. I never thought I'd be writing Python full-time, it's a really strange language (coming from Swift/Objective-C) but I'm really enjoying it. I now know how to write scripts which can be used from the Terminal! My aspirations of learning about compilers is still there, but I'm happy to put it on hold as long as I'm still learning new things at work.

Work is great, life is great, I couldn't ask for anything more.

2018 + Facebook

It's a new year and like a lot of other people, I have some things I want to focus on and learn this year. I've been reflecting on my career lately and I feel that I want to explore other areas of programming, but I don't want to leave the iOS and Swift community because I've become so fond of it and the people within. So instead of moving across to another programming environment or language, I thought it'd be an interesting experience to go lower. 

For roughly eight years, I've spent majority of my time writing in Objective-C and Swift, and now that I've joined Facebook, it looks like I'll be trying my hand at Objective-C++ (but more on that later). I'm curious how all this stuff works on a lower level, which is why I want to focus on compilers, LLVM, Clang, LLDB and the likes over the next year. Ideally I'd learn enough to write a blog or two about how they work and perhaps even a talk at one of the many local meetups. So yeah, that's pretty much my goals for 2018.

Also, as of today, I've graduated from Facebook's Bootcamp program for new hires and will be joining the UI Infrastructure Team. It's a team that works on problems faced when there are so many engineers working on the same projects whilst trying to maintain visual consistency throughout those projects. Basically, it’s solving UI scaling problems, which is awesome because I've always wanted to learn about how to scale projects. 

Me, myself and Playgrounds

Upon reflecting on the previous two years of my work, I’m incredibly proud of the things I have been able to accomplish. I managed to write some technical posts which got noticed by the community, I was invited to speak at try! Swift NYC, I organised Australia’s first international conference for Swift and Apple developers, and now I’m about to relocate to San Francisco and join the Facebook team.

Speaking of Playgrounds, it was such an amazing experience getting the opportunity to meet everyone and creating an environment for people to learn and make new friends, it was all a blast. Australia and New Zealand have such a rich Apple developer community and I'm so grateful for everyone that supported myself and the event. 

While I was waiting for my US visa to be approved, I spent some time in Thailand and caught up on a lot of me-time, which I felt was long overdue. After a bit of introspection and pondering on what I should be next working towards, I’ve decided to take the next to year to focus my attention back towards engineering while settling into and exploring my new Californian home.

Unfortunately, this decision has forced my hand to make some tough decisions and I’m sad to say that Playgrounds won’t be returning in 2018. This decision was an incredibly difficult and daunting one to make, but I hope everyone can understand my reasoning. There's still a slight possibility that it may return the following year, but a lot of things have to fall into place before I'm able to make a decision and commit.

Once again, I thank all of you which showed support and passion for Playgrounds. I couldn't have asked for anything more and I'll be forever grateful of you.

Rise and grind

Since my previous post, even more has happened. I had since left my workplace which I loved and my city which I called home. After three years growing my skill set at Punters, going from solo dev to lead of the iOS team, I felt it was time to move on to new horizons and allow myself more room to grow and explore which path within my career I wanted to explore next.

I sold all my things, packed my bags and moved back to my home city, Perth, and lived off my savings so I can spend six weeks brushing up on Computer Science fundamentals, algorithm patterns, architecture design, domain knowledge and interviewing skills. 

I flew out to San Francisco two weeks ago and have since conducted seven onsite interviews with a few of the big tech companies: Facebook, Airbnb, Square, Apple, Lyft. Each of these interviews ranged from four to six hours long (although, one of them was only an hour long), which is probably one of the hardest things I've done in a long while, I would say organising Playgrounds was a much easier experience than this.

Having just completed my last interview yesterday, I'm still waiting to hear feedback from all the companies and hopefully, all my studying and preparation was enough to meet or exceed their standards. 

 

2016, Such a rollercoaster

By the end of 2015, I was doing some great work at my job and was happy with the way things had been progressing in my career since I decided to make the move from Perth to Melbourne in the middle of 2014. However, 2015 was a "mental gap-year" for me, I had just finished my Computer Science degree the previous year and wanted to take some time to just relax my mind and coast for a while. As the end of the year loomed, I set out some goals for myself and announced to Melbourne Cocoaheads at the December meetup that I wanted to be a bigger part of the Swift and Apple developer community. I honestly had no idea things would turn out the way that they did.

In one of my earlier journal entries, I detailed a list of goals I wanted to achieve and the metrics for which I would base my success off. With the exception of blogging weekly, I'm happy to say that I met all of my goals while I was speaking at my first international conference, try! Swift NYC, in September.

After I came back from New York, I pondered on what 2017's goals would entail and decided to really push myself and host Australia's very own international conference for Swift and Apple developers. The date was set for late February because I didn't want to clash with WWDC, post-WWDC conferences, and our homegrown conference, DevWorld. However, this date only gave me five months to plan, organise and execute the event, which was no simple task because as my advisors forewarned me about, organising a conference is a lot of work.

Although it was one of the most difficult things I've ever done, organising a conference, and working 9 to 5 as a software engineer, the event ran incredibly smoothly, people told me they had an amazing time and learned so much from the speakers. In the coming months, I plan to write about how I soloed the entire organisational aspect of the conference and leveraged the skills of my friends to help me with parts I couldn't do myself. I've always tried to give something back when I'm in a position that allows me to do so, and I hope there's someone out there that will probably find the material helpful enough that they feel encouraged to organise their own conference sometime in the future.

Anyways, that's the year that was and as I get back from my post-conference-holiday in Japan, I'll hopefully have a solid 2017 game plan of goals and ambitions for this year. Big thanks to all those people that supported me in the past year, I couldn't have done this without you.

So much has happened already

Amazing things have happened since my last post, I'm finding it really hard to believe it all considering how early in the year it still is.

The biggest endorsement I can think of for my writing is that Chris Lattner, the creator of the Swift programming language, liked one of my posts so much that he tweeted it, it took me by such surprise!

What happened was, Swift 2.2 was released the day before and I spent the entire work day going through my code and removing all the cautionary Swift 3.0 deprecation warnings in my code. A few months ago I started doing this pattern to help me abstract a bunch of similar code into one spot.

The next night I decided to share my thoughts in a Medium post, and as I was writing I had an idea to extend the pattern even further. As this idea came to my head, I had to head out to dinner and when I came back I stayed up late to test it and make sure it worked (which it did) and then blog about it and post it.

The next morning I wake up to see my twitter notifications went bonkers in the night, I opened the Twitter app to see Chris's tweet about it. Seriously couldn't have been more chuffed about it.

Anyways, it got picked up by a few newsletters, most notably NatashaTheRobot's "This Week In Swift". A week later I get a direct message from her saying she's enjoyed my recent posts and if I would be interested in flying to New York City and speaking at her try! Swift Conference. Obviously I said yes! 

So yea... things are off to a great start. Bright times ahead!

Two months into the new year with Medium

So it's been just over two full months since I had set out with the goal of writing at least one blog post each week. I'm actually ecstatic to say that it has been going incredibly well!

When I first decided to start writing, I tried putting all my posts onto this website, but I was very unhappy with how Squarespace handles coding blogs. I did look into customizing my SquareSpace blog to better suit my coding blog needs but chose to go with Medium's offerings instead. Since then I have published seven posts in total.

At first I started with "easy" posts relating to iOS developer resources (Videos, podcasts and newsletters) to help me get back into writing which something I haven't done since high school. And from then on I started writing whilst teaching myself some harder topics such as Protocol Extensions, Generics which took off really well. Surprisingly the more simpler topics have been a massive success too. It's amazing how no matter what you think people may or may not like, someone is most likely going to find it interesting.

I'd also like to mention that two of my posts have been featured in what I would consider to be the two most influential newsletters. Dave Verwer's "iOS Deve Weekly" and NatashaTheRobot's "This Week In Swift".

So yeah, it's only been two months and I've already (in my opinion) made a small impact within the iOS/Swift community!

This Week In Swift #73 - Natasha links to my medium post on CGGeometry structs

iOS Dev Weekly #241 - Dave links to my medium post on Tuples

The year that was and the year that will be

Wow, it's been about 15 months since my last journal entry. So much has happened since then it's crazy. I've been placed at an amazing company in the heart of Melbourne, which i'm also currently the lead iOS developer for. I learnt Swift at the worst possible time, it was crazy stressful around the iOS 9 release as well as Melbourne Cup but I believe i came out on top.

So many personal goals of mine were met and smashed, I'm in awe of how much the move to Melbourne has turned out to work in my favour. I'm aiming for 2016 to be the year where I make a name for myself within the iOS and Swift community, both local and abroad. I've set some goals of which are:

  • Blog at least once a week, or have a total of 52 by the end of the year.
  • Do at least 4 talks by the end of the year.
  • Have at least one talk interstate or overseas.
  • Amass at least 1000 followers on Twitter and Medium.
  • Improve my writing skills.
  • Be amazingly great at Swift

The Twitter and Medium follower goal is kinda dumb, i know, but it's one of the only metrics I have available that can give me some an indication of how I'm doing within the community. Speaking of Medium, I had to move my technical blogs to there, simply because Square Space isn't technical blog friendly, I tried, but it was an uphill battle to get code examples looking nice. Also the community of Medium is definitely something i can leverage because there is a greater chance of discoverability on there than on this website. If you want to check out my Medium page, just hit the "Blog" link up the top.

Will keep in touch and let you know how I go throughout the year. Until then, be safe, yo!

Suburban Weather

After watching the WWDC 2014 developer keynotes, i noticed they were pushing for developers to use Auto Layout constraints a lot... So i downloaded the Xcode 6 beta and started teaching myself how to use Interface Builder all over again. A couple years ago i decided to write all my UI programatically because of the speed of productivity benefits as well as because I thought IB was incredibly slow and buggy at the time. The end result is Suburban Weather which i've put up on GitHub if you want to have a look and play for yourself. Enjoy. 

An update for 'Please Help'

Wow, what a year its been. Please Help was created as a part of my university degree project nearly over a year and a half ago. It was developed by myself and fellow student Adrian Jurcevic, with the help of our supervisors from ECU and support from the WA Police and Therapy Focus.

Since then, we were entered into the 2014 WAiTTA Awards and were chosen as finalists for the Student Category. Please Help was also featured on Channel 7's Today Tonight show and hopefully it can help get the word out about the app so more people can have a piece of mind when their loved ones are out by themselves.

Thank you to the ECU staff, WA Police, Therapy Focus for helping us create something great.

Links

Please Help (Free)

Channel 7 Video



My new home

I've been recommended to use SquareSpace over Wordpress. At the moment, i think it's pretty amazing. And more than capable of handling what i want to do. I'll use this page for uploading current projects and designs, as well as including means to contact myself.