Jumping on the static site generator bandwagon!

Much of the web these days (>26%) is built on WordPress. It’s popularity is likely based around a few reasons:

  • Its usage of common server software: PHP and MySQL. Any server (even Windows!) can run a PHP/MySQL site. Most popular blogging and forums software have this in common.
  • Many shared hosting providers have 1-click setups.
  • There are masses of plugins/themes.

WordPress (and most other CMS like Drupal/Joomla) have security vulnerability being discovered every few weeks!). WordPress took things seriously a little while ago where they enabled automated patching. Now your Wordpress install can patch itself. A really good idea that I’m sure has prevented many hacks. Even before WordPress made patching automated, the update process was pretty good. You logged in to the web interface, and clicked a single button. Drupal on the other hand, is a mess when it comes to updates. Updating requires SSH’ing to the server and either copying files over, or running a CLI (Drush) to do it. You then have to log in to the web interface to trigger the upgrade. Another thing WordPress gets right is backwards compatibility. You can update an old instance forever. Drupal on the other hand makes updating between major versions a very difficult process, which will likely cause plugins or themes to stop working, and you can’t easily test this. It’s the old school ‘put up a maintenance page and hope for the best.’ Because of this, the vast majority of Drupal installations are on old versions.

Many sites don’t really need a full CMS. It’s understandable if you have a complicated blog, but many people use wordpress to host a simple static page, just because it’s so easy.  The low upfront cost comes at a price: Performance is much, much worse, and the CMS requires maintenance.  In come the static site generators!  Over the weekend I decided to play around with Hugo. It’s surprisingly easy to get something going. Rather than rely on a CMS like WordPress or Drupal, with Hugo, you build your website in code, and convert it into static HTML files. Then you just need to copy the HTML files over to your server. No PHP, no apache configuration, and no database. If your website is just a bunch of HTML files, you can’t really have a security vulnerability. (You obviously still have to patch the server, but your app is safe).

But running Hugo, and then copying over HTML files to your server doesn’t sound like fun, especially if you’re iterating quickly. In come the static website hosts. They’re designed to only host static websites. They don’t need PHP/MySQL, and can easily cache the whole site. My favourite is netlify. I have the code for my homepage sitting in a private GitLab repository, and I have my Netlify account configured to automatically grab the code in my repository, build, and deploy it. So once I’ve made the changes I want on my desktop (and commited to the local git repo), I just type two commands to deploy my code to www.antonywilliams.com


git push

It’s pretty incredible that both gitlab.com and netlify.com are both free.

United Airlines are the worst

I’ve lived in the U.S. for the last 15 years.  Having always lived close to a Delta Hub, I’ve always flown Delta. I’ve never really had any serious problems with them. Last year I moved to Seattle. Seattle is also a Delta Hub, so I figured I’d continue flying with them. Unfortunately, for reasons I don’t yet understand, flying Delta out of SEA is often far more expensive than the alternatives (sometimes >50% more!!!). I recently had to go on a work trip to Washington D.C. United was the far cheaper airline, so I booked it. It was mostly uneventful, except for the fact that they gave us a single drink, and not so much as a peanut for a 5+ hour flight! And to think I used to complain about Delta’s pretzels…..
How on earth can they justify giving you a single drink for a 5+ hour flight that cost $1,200! I’d rather they charged me $1,210 and gave me a sandwich.
Anyway. We recently planned a family trip for Christmas to Puerto Vallarta. Again, Delta was a complete rip-off, coming in at almost double the United flight, so again, I reluctantly booked the United flight.
I have a 2 1/2 year old. Traveling with him has always been uneventful. Except now, he’s potty trained, and needs to go to the bathroom quite often. I’m used to always boarding first during the “those who need extra time” announcement. This is really useful, as I can board early and quickly take my son to the bathroom before takeoff. We had a two leg flight to PVR: SEA-SFO, where we boarded early, and had no problems, followed by SFO-PVR.
I waited in line to get a gate check tag (for the stroller). There were two employees at the counter: The first was taking care of the only customer ahead of me, and the second seemed to be playing sudoku. Despite the long line, they didn’t call for help. We just all patiently waited. I finally was called up after about 20 minutes, and this went down:

united employee: “This is gate 74. SFO-PVR is at a different gate”
me: “Um… The monitors show gate 74. Can you just help me?”
UE: “No. You need to go to the correct gate”
me: “I can see the monitors from here. They still show SFO-PVR as gate 74”
UE: “The monitors will update shortly”
me: “What gate will it update to”
UE: “I don’t know. Please wait for the monitors to update”
me: “Can you just give me a gate tag, I’ve been waiting for 20 minutes”
UE: “Please go to the correct gate”

Brilliant. Thanks United. Anyway, I wait for the monitor to update, go to the correct gate, and wait again for a gate check tag.
It’s finally time to board, and we’re stuck with one of those arrogant “I’m in charge, do as I say because I’m wearing a badge” kind of guys at the gate.
He announces “Early boarding for those who need extra time such as people in wheelchairs.” Denisse, my two year old son and I approach the gate….

UE bossman: “What are you doing. You have to wait until I call your zone.”
me: “Um… you just announced early boarding for people who need extra time.”
UE bossman: “Yes, but I said that was for people who are in wheelchairs.”
me: “No, that’s not what you said. You said early boarding was available for people who needed extra time, and followed up the statement with an example of someone who needed extra time, such as someone in a wheelchair.”
UE bossman: (looking really confused) “You cannot board. You’re not in a wheelchair. I specifically said you had to be in a wheelchair to board early.”
me: “No you didn’t, and you don’t seem to understand what I’m saying… Whatever.” (I turn around and start walking away)
UE bossman: “Please sit down until your zone is called. You’re slowing everyone down.”

While waiting for my zone to be called, I hear the guy yelling and complaining at people “People, get your passports out, and have your boarding passes ready, and things will go much quicker.” He yells this out at least 5 times, getting louder and angrier each time. Finally, it’s our turn to board. I was carrying our son in one arm, with three carry-on items in the other hand. Denisse, who is 7 months pregnant, has the stroller (folded away with the gate check tag), her backpack, and all three of our passports and boarding passes.

UE bossman: “No, no, no. I told you clearly to each hold your own passport with the boarding pass in the photo page.”
me: “My two year old cannot hold his own passport, and I’m holding a child and three carry-on bags. So I can’t hold my own passport either.”
UE bossman: “You’re slowing everyone down. We’re going to have a late departure because of people like you.”
me: (as I walk away towards the plan) “Yep. Precisely why we needed extra time.”

You’d think this would be over, but it isn’t.

On my final day in Puerto Vallarta, while at Dinner, I got an email saying that my flight had been cancelled. It had a footnote saying to find my own way home, or to call if I wanted United to try to book me on an alternate flight. Seriously? An email? Why don’t they automatically book me on another flight. What’s the probability that I’ll not want a return flight?. Luckily I have a smart phone with international data plan. Otherwise I would have been screwed the following day at the airport. This was to travel on the 31st December, and they were telling me at 9pm the night before a 3pm flight…. When a plane carrying 150+ people gets cancelled, it’s first come first serve to find an alternate way home, so I rushed out of the restaurant (skipping the last of my dinner and missing the churros I’d barely ordered for dessert) to try to figure this out. The website said that United had zero available flights for the next 4 days, and asked if I could fly back to Portland and drive the rest of the way (Are you kidding me!!!!). I called, and had to inform the CSR that Delta had seats on a similar flight. Just as they were about to book the Delta flight for us, we got disconnected. They never booked the flight, and they didn’t call me back (they have my info and number…. why aren’t they proactive!). I called again, and after 25 minutes on hold, it hangs up. Finally, on the third time through, they agree to book me on a Delta flight, and order is restored!

The rest of the trip was fairly uneventful. The first leg of my flight got delayed by a bit, and guess what, Delta actually called me (in addition to emailing me) to inform me of the delay. Delta also booked me a backup flight from LAX-SEA just in case I missed the connection. Now that’s how an airline should operate! I was no longer worried about missing my connection, as I knew I would make it home. Delta then had employees  personally escort us between planes to ensure we made the connection (we skipped the lines at Customs etc..). Now I know why United is cheaper. Because it’s an awful, awful airline. They don’t even get the basics right. Delays happen, and flights get cancelled. I understand that, but it’s up to the airline to have a strategy to deal with it. United has no strategy at all.

The following day, Delta emailed to apologize for the flight delay (It ended up being a delay of about an hour, and I didn’t miss my connection). How about United? Nothing. Zip.

Thoughts on Apple’s announcements

I haven’t posted in a really long time. Mostly because of http://blog.antonywilliams.com/2015/09/09/amazon-web-services/

I really like the below quote from Apple’s biggest and most biased fanboy:

Complexity isn’t the reason why Netflix doesn’t allow offline viewing. It’s just their excuse for not having it yet. It’s right out of the Steve Jobs handbook: something you don’t offer is a terrible idea, until you offer it yourself, at which point you explain why your solution is the first to get it right.

I think that about sums it up. the 3D touch has potential to really improve interaction, but as much as Apple would say otherwise, most of the other stuff was evolutionary, not revolutionary.

Apple Watch: Google and many others came before Apple watch. I don’t see them as competing devices though. If you want a watch, you’ll likely pick the watch that runs the same OS as your phone.

Apple TV: Many others came first, but Google and Amazon were first with a full app running mobile OS based set top box. Arguably Google didn’t take advantage of being first to market (Android TV is really good and has great potential, but is still buggy, and Google TV was an absolute embarrassment that nearly crippled their hardware vendor (Logitech). I am genuinely excited about the Apple TV though, as the industry follows Apple on a lot of things. Though Google and others launched their products first, Apple TV will probably kickstart developers to launch a lot more mobile/TV cross games. It will be pretty cool to play a game on your phone, and then continue where you left off on the TV or tablet. I do wish Google would invest more heavily in Android TV. It has so much potential! (maybe now they will 🙂 )

iPad Pro: Seems like great hardware, but it’s a total rip off of Microsoft’s surface. Beefier specs, stylus, keyboard case. Check, check, check. I’m sure it will be good, but the main difference here is that the Surface is running a full blown desktop OS (for better or worse).

Another point that’s interesting. The latest and greatest chip is now the A9 and A9X. The iPhones get the A9, and the iPad Pro gets the A9X. Makes sense so far. But what if you want a regular iPad, or an Apple TV….. You have to settle for the year old A8. If I were in the market for such as device, I’d be pretty annoyed. I suspect the reason is because of the price points. Apple can get away with charging $650 for an iPhone, but ‘only’ $400 for an iPad mini, and $500 for an iPad, and for obvious reasons, they couldn’t charge anywhere near that for their TV device.  So, some things have to give. I own a Nexus Player that I got for cheap, and it’s a pretty good device, but really, I have my eye on the Nvidia Shield Android TV. It looks great, has a killer specs (Tegra X1, 3GB RAM etc..) and will likely get prompt Android updates, but until the Android TV ecosystem improves, there’s little reason to get such a powerful device.

Amazon Web Services

9 months ago I accepted a job offer with Amazon Web Services.


I haven’t posted anything since. Partly because the new job required moving across the country, and partly because I’m much busier now than I was before.  Seattle is expensive, and people with families generally live east of Seattle, and commute in. I commute about an hour each way. That makes my work day about 11 hours. More if things get busy. But the tech and the people are absolutely incredible. I accepted the job because this kind of scale isn’t available anywhere else. There’s a reason Google and Facebook started calling it ‘Cloud Scale”

Enter the Nexus

As rumoured (and expected), Google announced the Nexus 6 phone/phablet last month:

Nexus-6And the Nexus 9 tablet:

Nexus-9The big shock for many was the Nexus 6’s price. Gone are the days of cheap, subsidized Nexus devices from Google. The N6 costs a staggering $650. Some argued that this is the normal price (still costing slightly less than a Note 4 or iPhone 6 plus), but for many, it was a huge surprise and disappointment. Many also criticized the N6’s size. Fortunately, the device is brilliant. Excellent battery life and great performance. The only downside (apart from potentially being too big) is the screen. It’s has an outrageous resolution of 2560×1440 that’s substantially higher resolution than my 1080p HDTV. Unfortunately, it uses a previous generation AMOLED pentile panel that doesn’t have the best colour accuracy, and suffers at the lowest brightness setting. I’m also a little disappointed that the device doesn’t use a 64-bit ARMv8 SoC, but that’s Qualcomm’s fault, not Google’s. Outside of Apple, there’s only one high-end ARMv8 SoC, and it’s the Nvidia Tegra-K1 chip found in the Nexus 9, but that runs too hot to put in a smaller phone. Still, it’s frustrating to spend this much money on a phone knowing that high-end 64-bit phones are just around the corner.

Despite a few flaws, it is a really good device with fantastic build quality, and a worthy competitor to the other phablets.

I also bought a Nexus 9 during their Black Friday sale. I was hesitant of the new 4:3 aspect ratio, but really wanted the brand new 64-bit Nvidia SoC, and rumoured higher build quality. I should have trusted many of the reviews I read online and avoided it because the build quality is absolutely atrocious. The speakers rattle with minimal bass, the back of the device flexes, the power/volume buttons don’t work consistently, and worst of all, the screen has a massive amount of backlight bleeding. Here’s a photo of the device while booting up. Everything except the bootup logo and progress bar should be pure black. Imagine how distracting this would be while watching a dark film such as The Dark Knight.

N9-screenNeedless to say, I returned it immediately. I requested a replacement from Amazon, and got a second device that exhibited the same problems. A few Google searches show that there are hundreds of complaints similar to mine, showing that HTC/Google have done an awful job at Quality Control. This is a real shame, because for many Android users that want pure Android, the Nexus line has been the only choice.  Thank you Nvidia, for building some competition. My next tablet might be the Nvidia Shield Tablet.

Newegg customer service

For several years now, I’ve noticed Newegg customer service get worse and worse. 15 years ago, I used to order computer parts from them all the time. Now that Amazon is carrying more and more electronics, I try to buy from them where possible (their customer service is always great!). Newegg has denied price matching themselves (when something drops in price 2 days after I buy it), denied RMAs, and cancelled orders for no reason. A few years ago they made made their free shipping slower too (presumably to eventually promote an Amazon Prime competitor. Recently though, they added ShopRunner. Since I have an American Express card, I’m eligible for free 2-day shipping (through ShopRunner) at lots of different sites. This is great. They seemed to be trying to compete with Amazon! Only one problem. Their 2-day ShopRunner shipping rarely actually arrives in 2 days. Of the last 4 products I’ve purchased from Newegg (using ShopRunner), 3 of them arrived late. They were all shipped through OnTrac. I called OnTrac, and their customer service was only able to explain that “Yes, it got delayed.” I took to twitter and said the following:

Here is where it gets much worse. I called them at 5pm, and heard the automated response “Hold time is currently 1 hour. Press 2 to get an automated callback.”
I pressed 2 but got no callback for the rest of the night. Then, at 6:30am, I get a call from Newegg. Since I don’t want anyone else to wake up, I quickly grab my phone and hang up the call. 5 minutes later, they call again. Then again 5 minutes after that. What awful, awful service. It’s obvious what happened. When the call centre closed for the night, they still left everyone in the queue, and continued callbacks as soon as the call centre opened up the following morning. Terrible, terrible, terrible.

Bait and Switch

We live in a world where many companies have been very successful giving an app or game away for free, and charing for extras – called IAPs (In App Purchases). Like many people, I hate this new business model. I like the old way of purchasing something outright, and owning it forever.

The wrong way to do things


Over the last couple of years, I’ve seen several companies release apps, only to change the price, or adjust their business model. The common use case is charging a one time fee, only to switch it to a subscription. This is common where there are ongoing costs, like a cloud sync, or something like that. However, it also happens with regular apps that have zero ongoing costs besides updating the app. The worst two that I’ve encountered are Tiny Thief, and Scanbot. Tiny Thief was an interesting new point and click adventure game published by Rovio, and Scanbot was a great app for scanning and uploading receipts. Both were paid apps, costing several dollars each, had no IAPs and no ads, so I was happy to pay for them.  You can probably guess where I’m going here. Both companies recently decided to make their app free, and then charge for the ‘pro’ features. This would have probably have been fine, providing they’d given existing paying customer the IAP stuff for free, but no, they didn’t. In the case of Tiny Thief, they actually removed all the levels that previously came with the ‘pro’ version, and hid them behind an IAP. That should be (and probably is) illegal. I’m hardly going to sue a company of a $4 app, but the behaviour is despicable. Do they honestly expect me to purchase the levels again? They didn’t reach out to customers. They just updated the app and silently removed all the ‘pro’ stuff. What about Scanbot? They more or less did the same thing. They made their ‘pro’ version free, and added some paid features as a $5 IAP. I contacted Scanbot, and got the following terrible copy/paste response:

Thanks for your email. Sorry if we confused you with our communication. All standard features in Scanbot you already bought will stay free, be maintained and we will add new standard features. What’s new and what we charge extra are specific pro features, like OCR or soon many more. Comparing with other scanner apps we consider our pricing more than fair.

Let’s begin tearing this email apart.

Sorry if we confused you with our communication.” – There was no communication. You just silently screwed over your paying customers. Do they really expect me to now shell out an additional $5?

Comparing with other scanner apps we consider our pricing more than fair.” – Except for the fact that I paid for the ‘pro’ version, not the free version.

Who are the most likely people to pay for an app? Probably those who already did! Maybe that’s their logic. They want their target market to pay again! However, much of that target market will probably not trust that company ever again. If you look at either Tiny Thief, or Scanbot’s Play store reviews, there are dozens and dozens of 1 star reviews complaining about it. Everyone is furious. Tiny Thief’s developers are ignoring it, and Scanbot’s developers are just replying with the above copy/pasted email to everyone who complains or gives a bad review. It’s truly terrible behaviour, and probably something that Google and Apple should not allow.

The right way to do things.

AvocadoAvocado was once a paid app in both the App Store, and Play Store.  The service itself was free through the web app, but you had to pay a one time fee to get the mobile app. I really like one time purchases, so I was happy to pay for it. It became fairly clear to me that this business model probably wouldn’t work forever, as there are ongoing costs with maintaining the cloud sync and storage. Avocado saw this too, and fortunately, did the right thing. They made the app free, switched to a subscription service, and gave all existing users a lifetime pro subscription for free. Now I recommend Avocado to all my friends. You can’t buy that kind of free positive publicity. Oh wait, you sort of can. Be grateful of your existing customers, and if you have to change your business model, do right by them.

Google I/O 2014

A month and a half ago, I went to Google I/O 2014. I’d been wanting to go for a long, long time, and finally managed to get tickets! In years passed, they have made major announcements about Android, Chrome, Google Cloud Platform, and given away some really cool gifts (laptops, phones, tablets etc..) always valued above the entrance fee…… Except for this year… This year, tickets cost $900, and the combined value of all gifts was about $550-$580. Being around all the attendees for a few days, it was clear that people were disappointed. Last year, the gift was a $1400 laptop. The year before, it was a tablet, a phone, a Chromebox desktop, and a Nexus Q. You get the idea.  It’s obvious Google wants serious developers to attend, not people who just come for the free gifts, and I overheard a few Google employees mention this as the reason for the less impressive gifts. Next year will prove this was an anomaly, or the plan from now on.
Usually, Google I/O is a time for major product announcements, and this year didn’t disappoint. A major new Android release (code named ‘Android L’) was announced, alongside Android TV, Android Wear and Android Auto.

Google’s previous TV effort was absolutely abysmal (read my previous post http://blog.antonywilliams.com/2012/08/19/vizio-co-starfor an explanation). Basically, their first two attempts were built on an old neutered Android version, shipped on severely underpowered hardware, couldn’t run most Android apps, didn’t work with the NDK (so no games or XBMC), and had a ridiculous remote control. Abysmal is probably an understatement. Now though, Google has released their third attempt, and it looks like they’ve finally learnt from their mistakes. It runs the full version of Android, will ship with great hardware (demo units were Tegra K-1), has a game controller to play all the Android games you’ve already purchased on the Google Play Store, and has a good TV friendly UI. I’m looking forward to buying one later this year.

Android Wear is Android’s answer to the Pebble, and other smart watches. It runs a slimmed down version of Android, mostly used for interacting with Google Now, and receiving notifications. Both of this year’s Google I/O 2014 gifts were watches: The LG G Watch

And and the upcoming Moto 360.moto_360a

So far, it’s more gimmicky than valuable for me, but hopefully, through some software updates, things improve.

Finally, we have Android Auto. I’ve been dreaming about this for years, and have always wondered why I should have to pay extra for the navigation package, when it’s worse than what’s on my phone. I got to sit in both an Audi A3 and a Hyundai Sonata that were Android Auto prototypes, and left very impressed. The beauty of it, is that there’s nothing complicated on the vehicle, so it shouldn’t cost much. The car is just a dumb touchscreen, with all the work being done on your phone, simply connected to the car by a USB cable.

Android_Auto-1 Android_Auto-2

Google is leaving pricing, availability and implementation up to the individual car manufacturers. Since this feature likely removes the need for an incar navigation system for anyone with an Android phone, car manufacturers will want to recoup their money by charging extra for the Android Auto functionality.


Denisse had been using my old laptop for the last 5 years. It still worked fine, and, because it runs Linux, was still stable, reliable and virus free, but it was starting to show its age. I decided to buy Denisse a Chromebook. The Acer C720P.

Acer-C720PI really like what Google is doing with ChromeOS. They use a rock solid Linux base, and enable only one app: Google Chrome. Its biggest limitation is its biggest draw. You can’t install apps or drivers. Google allows you only to install Chrome extensions, many of which disguise themselves as apps, but are still running in the browser. Because you can’t install anything except a browser extension, it’s basically impossible to break the system. There’s nothing to break!
Every time a not-so-technical friend asks me to help fix their computer, I notice the same thing. They’ve installed all kinds of junk (which they often deny ever installing!). Multiple Anti-Virus apps, dozens of browser tools bars, and spyware galore! To most of them, I recommend a Chromebook as their next computer.
Not being able to install your regular applications can be a problem though. You need to find an equivalent web application for everything. That means instead of Skype, you have to use Google hangouts (or other web-based video chat). Instead of Microsoft Office, you can use Google Docs (or Microsoft’s Office web apps, which are actually free, and really good!). Instead of Photoshop, image editing in the cloud, Pixlr. Etc… These kinds of limitations obviously won’t be good for everyone, but if you can get by, or spend 90% of your computing in a web browser anyway, there are some serious advantages.
The machine boots in under 5 seconds, has great battery life, and is cheap, thanks both to not having to pay for Microsoft Windows, and because the Linux based OS is so efficient that you can get by with lower hardware specs.
One thing to keep in mind is printing. Since you can’t install apps or drivers, it won’t work with a regular printer. Since all printers are different, and Google didn’t want to pre-bundle hundreds of different drivers, ChromeOS requires Google Cloud Print to work. It actually works quite well. You connect a GCP compatible printer to to service, and Google does the rest. They will receive the document you try to print, and convert it to a format that your printer can read This means I can print from anywhere in the world, from any device that has Chrome (even Android!), with no driver installation. I needed a new printer anyway, so I picked the Samsung SL-M2885FW, which Newegg had on sale for $185. My favourite feature (outside of Google Cloud Print support) is the Android app, as it enables you to scan documents straight to your phone. No longer do I need to connect over USB, or plug in a USB or SD card to get my scanned media on my computer.


Overall, if you can make do with the ChromeOS limitations, you’ll probably really like it. For those who can’t, it still makes a cheap, good, second PC to leave around the living room. Your kids won’t be able to ruin it.

Almond Plus

I backed my first Kickstarter in March of 2013. It was for a new network router. The company behind it already makes a router (the original Almond), and it’s a top seller on Amazon. Being a small company, they went to Kickstarter to get funding for a new and improved version. It has a few things that make it special. A touchscreen, support for additional apps and sensors, and a lot of horsepower inside. Unfortunately, like most Kickstarter projects, the Almond+ was siginificantly delayed – about 10 months! As disappointing as that was, at least it was because they were improving the originally promised hardware:

  • Dual core 1 GHz ARM Cortex-A9. (Most routers are single core 500MHz.)
  • 512MB RAM (Most routers are around 16MB).
  • Simultaneous dual band AC1750 3×3 MIMO 802.11ac and 802.11n Wi-Fi.
  • Integrated ZigBee and Z-Wave support for home automation.
  • Gigabit WAN and four Gigabit LAN ports.
  • 3.5-inch resistive touch screen.
  • Two USB 3.0 ports.

Mine arrived today, and it’s all set up. My favourite part is that the core OS is OpenWRT, a very power open source router firmware. I’m not sure why they used an old release of OpenWRT (Kamikase) though, perhaps related to kernel and drivers, or because it was easier to integrate with Securifi’s UI and touchscreen. Who knows. Overall though, I’m very impressed. Especially for the $95 I paid. It has a few rough edges, but hopefully will receive continued software updates. almondplus