What WWDC's News Means For Brands

Apple's Worldwide Development Conference (WWDC) is an annual conference where over 5,000 software developers gather to learn about the new tools and technologies being made available to them to create great apps. This week the conference is happening and today Apple held its main keynote, with some notable new features for it's multiple platforms (Watch, TV, Desktop, Phone).

There are some notable features I'd like to draw the attention to for brands to take advantage of. Brands who adopt new features quickly will always be the winners on Mobile and Web. Always.

Enhanced Push Notifications

iOS 10, due to be released in Fall (Northern Hemisphere), brings with it enhanced notifications. These notifications are able to go further than the standard buttons and text entry, to presenting a complete customizable area. In this area, anything can be shown such as a preview of a map, some text, maybe a video, or something else unique to your app. Imagine being an ecommerce site and being able to present a personalized deal with a image, price and a buy now call to action, without the user even having to open your app!

Apple Pay Online

In addition to VISA or Mastercard checkout, your developers can now add the ability for your users to pay with Apple Pay. This allows users to make purchases both on their Mac and iPhone. This low-friction checkout experience will have a large reduction in Cart abandonment and increase sales. Users just tap their fingerprint and they've paid. Secure, quick and painless.

Siri Support Inside Apps

That's right, after years of asking, there is limited support for developers to support searching with Siri. Siri can book you a ride in Lyft or send you some money on Square. A user could ask "What Jeans are 'in' this season" and be presented with items from your app.

But what about adoption?

Some iOS versions have been slow adopted due to the value proposition to the end user. However, iOS 10 brings with it some epic enhancements to the iMessages app centering around emoji use and more expressive ways to converse. While not hugely beneficial to brands, the changes do mean that we can expect to see a big adoption in iOS 10, especially amoung teenages and mid-late 20s demographics. Emoji alone is a major reason why users updated from iOS 9.0 to 9.1, as they were seeking the middle finger and taco emoji.

In conclusion, Apple's innovation continues to provide value for brands, and those who react quickly and beat their competition to market will hold the attention of potential customers. There's more information on the dead simple to use Apple Website, take a look!


Thanks for reading. Thoughts? Comments? Feel free to say "Hi" to me on Twitter, I'm @samjarman.

Copyright and credit for all images used are to Apple Inc.  

Style Checking for iOS Development

In a recent episode of Silicon Valley, Richard and Winnie had a fight about Spaces vs Tabs. It reminded me of this comic on the debate: TabsSpacesBoth

Obviously the point of the comic is that the decision is fairly arbitrary, but consistency is of the utmost important.

So the question is: Teams how do you stay consistent? or How do you stay consistent to your former self? The answer: Style Checking.

So I thought I'd write this blog post to talk about the way I use style checking. Obviously I spend a lot of time doing iOS, so let's talk about that.

Firstly, I have a few requirements for such as tool.

  1. Support both Swift and Objective-C
  2. Produce inline style errors in Xcode
  3. Easy to configure
  4. A nice settings file that could be checked into Git
  5. Free or low cost

What I found about 2 years ago was Objective-Clean (and later, it's sister product Swift-Clean). These are fantastic tools created The Ostlers and have served my needs since.

Objective-Clean icon

Swfic Clean icon

The workflow is really simple too. To start, simply gather your team and take the survey together. Once the yelling ceases and the evil eyes have stopped being made, you'll have yourself a downloadable settings file.

Once you've got that, grab a copy of the software (It's very cheap at $10USD).

Then, open the app, drag your xcodeproject or xcworkspace into it, and it'll configure itself. Under the hood, it adds a build step that'll style check your code after each build.

From there, the style errors will jump out at you, and you can take a small amount of time to bring your project up to consistency. Boom.

So that's how I take care of Style Checking. Props to Blair for showing me the ways back in the day. It's been rewarding to keep our code looking 💯.


Do you use style checking? If so, what do you use? Do you know any other tools? I'd love to hear from you on twitter - I'm @samjarman.

Learning Elixir: Part 3

Hi All, Wow, we're already at part 3 and we're barely scratching the surface. I see a long road ahead with so much more learning to do. On the more positive side; I'm getting it and I'm finding it quite enjoyable so far... so let's crack on, shall we?

In the last few days I did two more experiments to do some basic sending and receiving between erlang processes (which I've come to find is a term which is interchangeable with BEAM processes, which is what I really mean).

My first task was to build a function (based on the video I linked to in part 1) that did some distributed work. So for this, I declared a function that took a list and a function and then the function would be applied to each item in the list. This was somewhat similar to a map() function in functional programming. Here's the Elixir part, each function would be run inside it's own Erlang process. Neato.

https://gist.github.com/samjarman/de7dd2337b425d1499cce16d0f1a5831

So, walking through the code, first we make a reference to the process by calling it me. Then on the list, we then map over the list, creating a function that spawns a process, which inside that sends back to the parent process a PID (self) and the result of applying the function to the element. Then on that list of PIDs we receive the result, and presto-we have a list of results. Pretty neat. With the task above, what wouldn't work is if the process was more complex (say, not multiplying a number by itself) and the process was to error out, nothing would rescue that... so that leads me to my next task.

My second task was to start playing with the concept of supervision, a reasonably crucial one in Elixir. I wanted to implement from scratch a really simple supervisor that would look at a randomly failing process and make sure it stayed alive.

https://gist.github.com/samjarman/7043ac55e9518969c8c1839d670d9622

So what I've done here is declared a worker function which fails just a little bit of the time, and if it does, it'll tell it's master about it before exiting. If the master hears about this, it'll respawn it and start listening all over again. Take a read through the code.

My next task is to start implementing some proper Elixir projects. There are also a few good ones to contribute to out there. If you have any suggestions for projects... I'm all ears!

Have you also been learning Elixir or Erlang too? Do you have any tips or comments? I’d love to hear them and share them in an upcoming post. Ping me on twitter.