Approximately 10’ minutes reading time.
Curriculum vitae as of November 2019.
This post aims to clarify a few things that typically come up as part of a discussion. It is a profile overview to help you make better sense of my experience and expertise. Please spend some time reading this to get a better understanding of who I am and where I come from. The 10 minutes that takes to read it, will save you a considerable amount of time that you either have to spend on a call with me or to go through my work.
Back in the summer of 2017 I decided to not pursue another permanent role and instead work on Windmill full time. I moved out of London in September of 2017. The future of Windmill is uncertain so I am now looking for employment.
I am currently based in Athens, Greece (GMT+02:00) and primarily looking for a remote role as a developer. I am more than happy to travel and open to staying abroad short term when required. I arrived in Athens in March of 2018, so I am not keen on relocating just yet. I may consider it sometime in the future.
I can also help you establish and run an engineering team in Athens. I have also been responsible for hiring and have experience in training developers, establishing processes and managing the delivery of software.
I am also available for short term contracting to advise and work alongside your team as we introduce continuous development and delivery within your organisation.
Why did you apply to join us?
Most likely I read the job description for a role you have advertised and it looks like I am a good fit.
Having said that, chances are your company/team has made a good impression on me as well. It is possible that you have built a reputation for yourselves that lead me to your website or you made a good first impression and I want to get to know you better by talking to you.
Finally, someone may have recommended I reach out to you.
Are you a developer?
I am a software engineer, yes. I have never had a role where I didn’t have to write code on a regular basis. Even at times where I had to wear more than a developer hat, step up and take ownership or act on my own initiative.
Why aren’t you looking for a management role?
I don’t want to be responsible for a group of people in a role that requires me to assess their performance and define their pay. I prefer to have a role that allows me to have a close collaboration and inspire others through my work and actions. In other words, I want to be a strong part of a team rather than an overseer.
Still, you are overqualified for a developer role.
I have heard of the argument that being overqualified will eventually make you bored. In my experience, an individual will get bored on a job that isn’t challenging, becomes tedious or there is little engagement. I have yet to resign because of boredom.
In any case, I do expect that your company is hiring for the long term. I am definitely in for the long run. In this case, surely investing in someone that is more than a developer can be an asset, not a liability for your company.
What about your experience as an iOS/macOS developer?
I studied “CS 193P iPhone Application Development” at Stanford University on iTunes U in 2009 and went on to release an iPhone app1 to the App Store in 2013.
At Aludio, I was one of the two iOS developers, working on an app that was about browsing, booking and paying for social activities.
At Soldo, prior to establishing an iOS team in-house, I was solely responsible for developing the “Soldo - The Family Spending Account” app on the iPhone.
A sample of the work I did while at Soldo
I also developed a sample iOS application written in Swift that includes an implementation of the Salted Challenge Response Authentication Mechanism aka SCRAM.
Going further back, at Tesco Bank, I contributed somewhat in the development of Tesco Bank Mobile Banking on the iPhone. At NCR, I was a core iPhone developer for one finance and one travel app.
I am solely responsible for inventing, designing and developing Windmill from scratch. It has taken at least 12 months of full time work2.
Windmill on the Mac is a standalone, native macOS application written in Swift for macOS 10.14. The codebase is about 16k LOC. The architecture of Windmill makes heavy use of notifications and Grand Central Dispatch to achieve its “reactive” user interface. I have implemented a
ProcessManager type to launch, monitor and recover external processes. In terms of frameworks, Windmill makes use of
CloudKit to store user records as well as
Alamofire to communicate with the Windmill REST API. It also makes use of a design pattern as described at A Series Of Steps post.
Windmill on the iPhone is a native app written in Swift. It makes use of
Alamofire. As part of implementing it, I wrote the post How to replace the rootViewController of the UIWindow in iOS
What about your experience as a Java EE developer?
Prior to shifting my focus on becoming an Apple Developer, I was a Java EE developer. I started writing Java EE back in 2001 while working at CERN for my student placement year.
The REST API exposed by the Windmill server is implemented using JAX-RS in Java EE 8, running on a Wildly hosted by an EC2 instance on AWS.
I have done all the setup for AWS from scratch, including network configuration, a load balancer, route 53, S3, Cloudfront, SSL certificates etc.
We would like you to do an assignment that will take XX hours/days.
While I understand the need to evaluate technical skills that lead to a follow-up discussion, I am not willing to invest time in what sounds like spec work. Especially if it is far too early in the hiring process.
For what is worth, here is an example of a coding exercise I have done in the past over a weekend when asked to demonstrate my skills as an iOS developer.
Instead, I invite you to spend some time going through code that I have made available in public as well as technical posts that showcase the skills, competence, approach and overall understanding of the iOS platform, SDK and the Swift language.
I believe there is plenty to see in all the above that can form the basis for a technical discussion. I’d be more than happy to share some implementation details, face to face, around architecture, REST API, security, etc to further communicate what went into building Windmill.
What teams have you been part of?
At Aludio, I was based in London alongside the Director of Engineering (also involved in backend development), a product owner and a designer. There was also a remote team of 2 developers (1 iOS, 1 Android) that we worked with very closely. We had a daily standup over video and used Slack for day to day communications. We also held product demos at the end of a sprint and did sprint planning over video too.
At Soldo, I was based in London. I was working closely with a product owner, a designer and 2 iOS developers. Remotely, I was collaborating with a backend developer. We used Github for pull requests and did ad-hoc/on-demand pair programming. We used JIRA to keep track, monitor progress and assign tasks between us.
What has been your biggest challenge as a software engineer?
Generally speaking, software development is the easy part. I know enough of the tooling, platforms, programming languages to get the job done. I have become pretty good at researching for new information to expand my knowledge.
Having said that, the biggest challenge has been to secure the apps distributed by Windmill on the Mac and made available to download by Windmill on the iPhone while also ensuring user privacy. For that, I sought advice from a good friend who is also a security expert. You can get a sense by reading the Moving the needle post.
What has been your biggest challenge in your professional career?
The work at Tesco Bank was the most demanding, challenging and stressful by far. I was hired as an iOS developer yet I ended up doing way more than that. I can’t go into specifics but the work I put in was the catalyst in saving the business millions in pounds.
What is you ideal role/company?
I prefer to work for an engineering/technology company that has a product focus. Having said that, the team/company is the most important factor in my decision.
I have given a few talks. Here are some notable ones.
- iOS Conf, “Memory and CPU Profiling”, 8 March 2017, Athens, Greece.
- NSConference, “Sound Debugging”, 18 March 2014, Leicester, UK.
- Athens iOS Meetups, “iOS Release Pipeline”, 12 June 2018, Athens, Greece.