Category Archives: Resources

Fixed: Mac won’t join the WiFi network

This morning I wanted to get my Mac to join the Hotel’s WiFi network, and after being shown the Join WiFi window, and after providing all the correct information, I was shown a button that did nothing when clicked. The reason was that clicking that button would show a JavaScript popup, and this is not allowed inside the Join dialog. Here’s how I fixed it.

Luckily, macOS has a way to load this WiFi Join window inside an actual browser. The URL works just fine in Safari, so point your browser to:

http://captive.apple.com/hotspot-detect.html

It’s now possible to fill the form and actually see the JavaScript popup (as long as the browser settings don’t explicitly prevent it).

Do you want to own your status updates?

After backing Manton Reece’s microblogging kickstarter I decided not to wait any longer and setup a MicroBlog section on my website where I would keep my short form updates. This post covers my goals and the approach I took to achieve these goals.

Goals

There are just a handful of things that I thought I’d need:

  • I own my content. I don’t mind posting to Twitter (or Medium) but the canonical location for my content is my own website
  • It’s easy. I can easily separate short form content (ie. statuses) and long form writing (ie. this post)
  • I still engage via Social Media. I can publish short form updates to my own website, and then the entries get cross-posted to Twitter
  • I  can post from my iPhone without needed to make edits from WordPress before publishing

Approach

I tried a few approaches (involving a range of apps such as IFTTT and various WordPress plugins) before I settled on the approach below.

It’s easy to own my content

My website is currently running on a self-hosted WordPress installation. There were two options here:

  1. I import all my Twitter posts under a special Category, or
  2. I post on my website first and then cross-post to Twitter

Option 2 feels more like “doing it right”, and, should anything go wrong in my setup, I never lose any posts I made from my own website.

What I decided to do was to:

  • create a new Category called MicroBlog
  • update the Menu to include this new category
  • replace the stock RSS widget with Category Specific RSS and use it to surface the MicroBlog RSS feed into the side bar
  • exclude the MicroBlog posts from the main page using the Ultimate Category Excluder plugin
  • make all posts in Category use the post format “status” so they looks consistent and timeline-like
  • remove all extra post decorations (ie. sharing) from the list of posts, but leave it on the post page itself
  • not use a post title, in order to mimic a status post more accurately

With these changes in place I ticked the first couple of boxes. What was left was to sort out cross posting to Twitter and publishing while on the go.

Sharing status updates to Twitter / Social Media

Posting to Twitter proved to be more difficult than I thought it would be. The obvious way, via Jetpack’s Publicize feature, seems to share only the link to the post when a title is not present. Therefore I had to look for other options, although I’d much prefer to just use Publicize.

The choice I settled on is an IFTTT rule: “when a new feed item is added to parfene.com/category/microblog/feed post a new tweet to @nicktmro”. The issue with this approach is that IFTTT doesn’t have a smart way of appending a URL to the post when it is over 140 characters, so I was “forced” to append a URL to the original post. It’s not very tidy but the counter argument is that it drives traffic (and search engines) back to the canonical location of the status update.

Posting while on the go

I carry an iPhone and a Pixel with me all the time. Posting updates to my website is a task I assigned to my iPhone.

I seek speed and simplicity when it comes to capturing my thoughts, which is why I use Drafts for almost every form of text capturing. This text sometimes ends up in iMessage, or in OmniFocus, or in an email, or in my Clipboard, or in WordPress… You get the idea.

I looked at the existing Drafts actions but I soon realised that I needed to be able to post exiting text and snippets, too. I needed an extension point. Enter Workflow. By delegating the communication with WordPress to Workflow I managed to increase the ways in which I drive content to my website.

Here’s how it all works:

  • I have a workflow that expects text input (or extracts it from the clipboard)
  • The workflow presets the WordPress category, post format, etc
  • This workflow is added as an action to Drafts

Now I’m good to go. When I choose to share my next status update all I do is go to my usual app (Drafts), write a snippet of text, and choose the Post to Parfene.com action.

Wrap up

I encourage you to try microblogging for yourself. My post is lengthy but you don’t have to do everything in one sitting. You don’t even need to fully automate everything, like I have.

This approach has made me feel more involved, engaged, and responsible with regards to the things I share with everyone. As somebody who oftentimes doesn’t count to five before he speaks, this should be a positive outcome…

 

 

Goodbye, Grandma

My grandmother passed away today. I cried for the first time in a long time. I am lucky though: I got the chance to know my grandma.

Her name was Maria (and she is part of the reason behind my daughter’s name). She was such an incredible woman. Not only was she a hard working person (she’d wake up at 5am and turn in at 10pm), but she never complained about the hand that life dealt her. She was born in the countryside, and she lived all her life at the top of the Harghita mountains. She raised four children (including my mother), and sadly she had to bury her husband and her eldest son.

She was strong and fit. She rode her bicycle till well in her 70s. She wouldn’t miss Sunday mass even if she had to battle a blizzard. She was respected and obeyed by the entire family. She never raised her voice, nor did she ever need to punish anyone. She knew how to have fun, too. When we least expected it she’d prank the kids, or she’s crack a joke.

Before emigrating to New Zealand, the very last trip I took was to go and see her. It was a 12 hour journey, and although I only spent a few days with her, I never regretted it. That was not the last time I saw her, though. I went back in 2011 and, for the first time in my life, I was able to have a grown-up conversation with her. She told me about what our family went through during the Second World War, she told me about how my grandfather lived and died, she gave me life advice, and she answered all my questions. I loved her more that day then I had my entire life. I had always known she was an incredible woman, but until that day I had never quite understood why everyone looked up to her the way they did.

My grandmother played a big part in my life. When I was nine years old and I ran away from home, I ran to her. When I had to decide what to do when I had a week to spend in Romania, I went to see her. When I close my eyes and think of my childhood, I remember spending time with her, learning how to herd the sheep, milk the cows, work the hay…

I’m lucky because I have so many memories with her. But there will not be any new ones and this is hard to come to terms with. Goodbye, Grandma, rest in peace, and thank you for everything you gave me.

I’m Attending Google I/O 2016

Although I have attended WWDC several times in the past, I have never attended Google I/O. I wanted to, but I didn’t manage to. This is about to change.

After a couple of years of becoming more and more involved in the Wellington Android community (by organising both the Android Meetup and GDG Wellington) I have finally been able to register for Google I/O.

I am a lot more excited than I thought I would be. The advent of Material Design and the relase of better and better Android devices (it’s no secret I’m a fan of the Nexus 5X), have contributed to making me more deeply involved in the Android ecosystem.

If you are around San Francisco between May 15th and May 21st, and you are keen to catch up and talk mobile stuff, get in touch. 

I can’t wait to attend I/O and to come back home to share my expeirence with the rest of the Google and Android community here in Wellington, New Zealand.

Clean Code – Mandatory Reading for Developers

All developers should need to read Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin.

If time prevents you from reading an entire book, then at least read this chapter: “17. Smells and Heuristics”.

One of my favourite bits of advice (that actually comes up a lot in discussions with the developers around me) is captured in this paragraph:

There is hardly anything more abominable than a dangling false argument at the end of a function call. What does it mean? What would it change if it were true? Not only is the purpose of a selector argument difficult to remember, each selector argument combines many functions into one. Selector arguments are just a lazy way to avoid splitting a large function into several smaller functions.

The book is filled with code examples, describes concepts rather than programming language idiosyncrasies, and is useful even for seasoned programmers.

Whatever language you code in (today), this book is likely to become a fixture on your desk for a very long time after you’ve finished reading it. Get the paperback version, and fill it with colourful post it notes.

TV Wishlist

I’ve owned an Apple TV for a few months now (I have a Dev Kit unit). I’ve coded for it and I’ve been enjoying it a lot more than I had anticipated. Here are some of the things I’d like to see in the upcoming iterations of the software / hardware.

Accessories for the USB-C Port

Camera

I’d buy a camera compatible with the this new Apple TV in an instant. I’d mostly use it for video chat (FaceTime, Skype, etc) but I can see how some other types of apps could use it too (Snapchat, Livestreaming a video podcast, etc).

Playroom / Kinect style games could also benefit from being able to plug in a video capture device.

Bluetooth is not an option because the camera would needs its own power source.

Game Accessories

This port could also be used for a number of game accessories. From Dance Dance Revolution mats, to Steering Wheels for your favourite driving game.

Web Browser

My reason may be different from yours. If you ever tried setting up an Apple TV in a hotel room, you probably know how annoying the whole log-in via a browser window situation can be.

Search APIs

Apps could be so much more powerful if they could tap into the Siri Remote search capabilities. Search is available to some video streaming services, but I think many more apps could benefit from such a feature. Here’s an example: “Siri, play a 10 minute summary of the new on Reuters”.

Picture-in-Picture

I’d love to be able to watch a film and then launch a Wikipedia or IMDB type app and interact with that app while the movie is still playing.

It would be great to be able to watch some live sports while shopping on Gilt, or browsing my next holiday destination on AirBnB. Anyone can get distracted during a game of cricket, surely.

New Remote

I’m one of those people who watch TV in the dark. Because of this I find myself holding the Siri remote “wrong”. I’m wishing for a less symmetrical remote that I can pick up an instantly know which way I’m holding. I also want a trackpad that is either less sensitive or is a bit smarter and doesn’t activate until I’m holding the remote with a tight grip or is able to detect accidental touches.

I’m hopeful

The reality is, that until the things above are implemented, the Apple TV will have to be shared with some other device. In my case, the couch device of choice is my iPad.

It’s likely that Apple prefers this, but they are also the one company that would be very happy to cannibalize its own product rather than wait for someone else to do it. Come on Apple TV, kick my iPad off the couch and turn it into my bed-side device.

AirPlay Speakers. A SONOS Alternative for iOS Users

I have been jealous of my friends sporting SONOS setups for a while now. My reasons for not jumping on the SONOS bandwagon are not limited to just the steep prices that the SONOS speakers come with. The reality is that I prefer to use my own music / sound playing apps and because I listen to podcasts for a considerable amount of time. In this blog post I will describe a cheaper and more flexible alternative for achieving the multi-room setup that SONOS is praised for, using AirPlay enabled speakers.

Scenario

In this article, I’ll describe my actual home setup. I need at least three speakers: two for my lounge area and one for my office. I wish to be able to play music and podcasts (via my Overcast, my preferred Podcast app) to either speaker independently or to all speakers simultaneously.

The SONOS Ecosystem

Pros

play1-blk-front

SONOS PLAY:1

Part of the SONOS promise is that you can easily and painlessly play the same music in multiple locations (rooms), using speakers that “play nice” and “just work” with each other. I believe that SONOS does deliver on this promise.

Scaling the SONOS setup is trivial, all that’s required is buying another speaker and adding it to the setup.

Cons

I have three main reasons to hold back from buying into the SONOS ecosystem:

  • SONOS speakers are quite expensive (arguably they do have very good sound)
  • They require the use of the SONOS app
  • Integration limitations

Now that Apple Music is available for SONOS my third reason is all but gone, but I have to acknowledge that this may not be your case if you prefer streaming apps that are not available in the SONOS app.

Cost

The cheapest speaker is the SONOS PLAY:1. It costs for $199. A high-er end SONOS PLAY:5 speaker costs $499. The SONOS SUB Wireless Subwoofer and the SONOS PLAYBAR TV cost just under $700 each.

The AirPlay Solution

Pros

iW3S_F.jpg.450x400_q85

iHome iW3

My needs are quite specific, therefore some of these pros may not apply to everyone.

  • AirPlay is available to any app (it’s a global iOS setting). It’s also easily accessible from the iOS Control Center
  • Big choice of speakers (most are budget friendly)
  • Old Airport Express units can turn any speaker with Line-In into an Airplay Speaker
  • Very easy to use as external speakers for Apple TV
  • Can stream the sound from any of my Macs (iTunes even has support for multiple speakers)
  • Most speakers have Bluetooth too, thus making them really good travel companions (to locations where WiFi is not available)

Scaling the AirPlay setup is not too difficult, after adding another speaker to the setup, there’s an option AirFoil configuration step.

Cons

The initial setup is more complex than with SONOS. Usually it requires joining an adhoc WiFi network provided by the speaker, followed by entering the local WiFi settings which enable to speaker to join the local network and become a wireless speaker for any AirPlay device.

SONOS speakers can easily turn into a 5.1 setup when enough speakers are added to the setup. AirPlay speakers haven’t really solved this, yet.

Cost

One the the most affordable options is the iHome iW3 AirPlay Rechargeable Wireless which retails for $49.95!

The audio aficionados can splash out on a Bowers & Wilkins Zeppelin Air Wireless AirPlay Speaker Dock. Amazon sells it for $420 at the moment.

I happen to have a Mac that is always on at home, so I decided to also purchase AirFoil. This has enabled me to group my speakers into “rooms”.  The Mac version costs $29.

Alternatives

Bluetooth

Most people will probably just use Bluetooth, and that’s ok. Not everyone needs the lossless audio that SONOS and AirPlay offer.

AirPort Express

As I mentioned above, an old Airport Express can turn an existing speaker into an AirPlay enabled speaker. Check out Apple’s refurbished store for a deal on AirPort Express units or buy from Amazon for $29. You don’t need the current generation one.

Android

There are apps out there that allow Android to tap into AirPlay. I am not familiar enough with them, and I suspect the new Chromecast Audio may actually be a more suitable solution. Chomecast Audio sells for $35.

Conclusion

I implemented the AirPlay solution for myself and I’m happy with it. I’d love to hear your thoughts, especially if you prefer an alternate setup.

Deciding on which iPhone to Buy

I bought a new iPhone today. My current one is damaged, but to be honest with you, I probably would have upgraded anyway. Here’s how I decided which iPhone to buy.

iPhone 6S

The choice was between the iPhone 6S and the iPhone 6S Plus. I have never owned a phone as large as the iPhone 6S Plus and I sometimes find even the screen size of the iPhone 6 to be too large for me.

I considered the 6S Plus because of these factors:

  • Optical Image Stabilisation for both Photos and Videos
  • Longer battery life
  • With a screen that large, it could replace my Kindle

In the end I bought an iPhone 6S because of these reasons:

  • Easier to handle single-handedly
  • More comfortable in my front pocket

The two things above I will be doing a lot of and I just don’t want to have to pay attention to how I handle the phone. The size of iPhone 6S Plus would make me be too aware of how I handle the device.

I have no doubt that the iPhone 6S Plus is a superior phone. Sometimes though, the more pragmatic choice prevails, even when it’s not a matter of cost. There are people who have to have the best, and to them I say: enjoy your iPhone 6S Plus.

Android Fragmentation – Just the way I like it

The 6th instalment of the Wellington Android Meetup took place today. I decided not to write about the content (I wouldn’t do justice to the presenters, and the audience contributed so much content, that I’d surely forget to mention something important), instead I wish to write about just how “fragmented” Android is … in Wellington, New Zealand.

Four talks

We had four speakers. Two men: Matt and Lucas; and two women: Jayna and Leonie. That was not planned, it just happened.

Matt talks about I/O

We had two fairly technical presentations that encouraged us to improve our technical chops and solve problems in more beautiful ways, and two that challenged us to think about what we like, what brings us joy, and what we are prepared to do from the goodness of our hearts.

People in the room

I glanced around the room and I was so happy to see how diverse it was. So many skin colours, genders, ethnicities, and ages!

Jayna impresses everyone with her knowledge and passion

In the room we had students, unemployed folks, business owners, developers, designers, testers, and even Windows Phone developers! There were people working for startups and people working for organisations with 500+ employees!

There were women. Not just sitting on chairs but engaging in the discussions. Driving them and asking the tough questions. Challenging the speakers and the audience. Recommending better ways to do things. As it should be!

I bring this up because I think back of where we started. I looked at some old photos I took and I struggle to find the women. I looked at the GDG Wellington reports I sent, and I blush seeing a mere two women attending one of the early sessions! Today, almost 20% of the audience were women!

Lucas in full swing

But we are not stopping here. Tonight Lucas announced that we are planning a GDG Dev Fest W.   The plan is to create a safe place for an evening, a day, or a weekend, where women can come and learn about technology without fearing that they may get laughed at, looked at in a condescending way, interrupted or ignored. Get in touch with Lucas or with myself if you want to help.

Fragmented

The Android community in Wellington is fragmented in the best possible way. This diversity makes the meetings more interesting, the points of view more diverse and more relevant.

I was the proud host of tonight’s gathering. It this kind of fragmentation that keeps me going, that motivates me to try harder, that makes me proud to be a small part of this incredible community. Our group now has more than 200 members, so I am hopeful that we have not seen the best of what this incredible bunch of people have to offer!

Thanks to everyone who attended.

Google I/O 2015 Extended Wellington

I am so proud to have helped organise what is likely to be an amazing Google I/O Extended event!

If you appreciate Google technologies, are keen to view a bunch of very interesting five minute talks, and stay up to date with Google’s announcements at I/O, and meet more like-minded people, then you should register here! Make sure you fill in the RSVP and you may take home some very attractive swag, too.

I am especially proud of my friends and colleagues Kate, Konnie, Gili, and Matt for helping coordinate this event.

Many thanks go out to the sponsors who’ve been providing support to our group: Trade Me, Powershop, Uber, and Victoria University.