Hello Firefox, Goodbye Chrome

A few weeks ago I said to myself, enough was enough and dropped the Chrome web browser.

If you aren’t actively following the web development world it’s easy to miss, but Google and Chrome have really been hostile toward the open web over the last few years. A few examples:

In 2016 Google introduced Accelerated Mobile Pages. From its wikipedia page:

AMP has been widely criticized by many in the tech industry for being an attempt by Google to exert its dominance on the Web by dictating how websites are built and monetized, and that “AMP is Google’s attempt to lock publishers into its ecosystem”. AMP has also been linked to Google’s attempt to deprecate URLs so that users will not be able to immediately see whether they are viewing a webpage on the open Web or an AMP page that is hosted on Google’s servers. AMP has been described as being “poisonous to the underlying concept of an open internet.”

In Chrome 68 they began to deprecate HTTP and now list HTTP sites as insecure.

In Chrome 69 they added a behavior that strips the www subdomain from the URL bar. (Try visiting www.mikezornek.com and it becomes mikezornek.com. This may feel like a small thing for users but as a developer its a firm violation for how the web URL works.

Just this weekend I read a story of some more shenanigans:

Matthew Green:

A few weeks ago Google shipped an update to Chrome that fundamentally changes the sign-in experience. From now on, every time you log into a Google property (for example, Gmail), Chrome will automatically sign the browser into your Google account for you. It’ll do this without asking, or even explicitly notifying you.

Paul Frazee:

There’s a reason people are reacting to Chrome like this. This isn’t an overreaction over one single event. It’s a delayed reaction to a pattern of bad behavior.

It’s contextualized by the very messed-up power dynamic between Google and the open Web.

Google’s influence over the web through its search was already over the line in many ways but to see its once celebrated browser go down this road is depressing.

Actions speak and Firefox is treating me well. I now use it across my computers and devices, from MacOS to iOS and even my Windows gaming tower. DuckDuckGo is my default search engine (and has been for like a year now) and works well too. It feels good to be using products from people who share my interests to heart.

Apple’s Use of Donations as Marketing

The other day Tim Cook (‪@tim_cook‬) tweeted:

Our hearts go out to the people of Sulawesi and all of Indonesia after this weekend’s devastating earthquake and tsunami. Apple is donating $1 million to aid relief efforts as this beautiful country starts to rebuild.

I feel bad for the earthquake victims too, but this kind of marketing makes me a little ill.

Best I can tell Apple reported 53.8 billion dollars in profit over the last year. If you compared the ratio of their donation to say a person making $100,000 a year, the donation would be $1.86.

Now I don’t want to say a million dollars isn’t a big impact to the receivers of the donation, I’m sure it is — but it just feels a little cheap to announce it and have everyone retweet it, the media website repost it, all to build up this fake “good will” sentiment. Hell, you can’t even buy a media ad campaign for that cheap.

Anytime you read this stuff remember, these are the same big corporations dodging taxes that could normally fund proper emergency relief and preparedness along with other infrastructure needs.

Some might say, well Apple needs to answer to their shareholders and this is how every company works. Well I say, everyone has a choice, and yeah it can be easier to fall in line and do the expected but I root for the person who is going to step out of line and Think Different.

At a minimum, donate your $1.86 annomously without looking for a thank you.

Gaming Update, September 2018

Forgive me, it’s been a while since my last gaming update. So, what am I playing?

Well first off, I’m officially done with Hearthstone. It’s a shame cause I like the game, but the price has just gotten out of control.

Paperkut

I was playing a bunch of World of Warcraft over the summer and into the new expansion. I leveled my rogue Paperkut to 120 but ended up unsubscribing right when the raid came out. I’m not interested in doing the whole “guild and 2-3 nights a week” raiding schedule and while I’m sure I would enjoy the braindead yet soothing process of leveling and gearing my alts it will still be there for me in a few months. For now I wanted to try some new games and put some more time into programming side projects.

After WoW, I went retro, starting games of Wind Waker, Earthbound and even a Pokemon Platinum Nuzlock. I consider them all still active playthroughs. Since my last nuzlock update I was able to finish the second gym with only one death so far. (RIP Perch, the Starly.)

And finally, last weekend I bought Cities Skylines — and oh man am I having fun building my cities. I’ll fault the game with having a poor built-in tutorial process but I was saved by lots of helpful web tips and tutorials. The base game is $29 with lots of paid for DLC. You don’t need the DLC to get started so if you fancy city simulators and have not checked it out yet, I do recommend. PC preferred, since it has a large mod community.

Let me know what you are playing! Email is fine, but blogging is better. See ya next time.

ElixirConf 2018 Notes

After attending ElixirConf I am as confident as ever that Elixir is a language, community and ecosystem I want to continue to personally invest and participate in.

About two years ago I made the decision that I needed to diversify my technical skills outside the Apple ecosystem. I then went on to experiment and research lots of different languages and frameworks, including EmberJS, Go, Rust, Elm, HTML5 updates, React and Elixir.

The Elixir interest started from a broad recommendation from Dave Thomas who I had years before followed heavily while doing Ruby on Rails development. Elixir also had gotten momentum from my interests in Functional Programming and looking to solve problems outside of traditional Object Oriented Programming design patterns. Over the last few months I’ve gotten deeper into Elixir and I really like what I’ve found.

I’ll do a post in the future about why I’m liking Elixir so much. It’s a potentially large topic and I want to give it the space it deservers.

ElixirConf was a great event. Two days of training and two days of conference sessions; I took it all in. My personal estimate would put the training day attendance at around 150 and the full conference at around 500.

While educational, I found the class pacing to be mixed. I felt one went a little too slow and the other a little too fast. There was a wide gamut of Elixir experience in the audience so I think it’s challenging for the instructors to find a pace everyone can agree with. That said, I learned a ton in each of the two more introduction-based classes I attended. I was envious of the more advanced classes that were covering GraphQL and hardware development using Nerves — I heard people were very impressed with them. Maybe next year.

For the conference days we had some great keynotes and session. I loved hearing José Valim (creator of Elixir) talk about the future of the language including the core teams failed experiments with adding a type system and why it’s not on the horizon. Chris McCord (creator of Phoenix) did a closing keynote, reviewing progress with the framework including a preview of Phoenix LiveView which was very impressive and has an opportunity to shake things up in the single-page app space. Aaron Renner had a great talk on taming complexity which mirrored some of my previous iOS code patters with way better naming. Aaron Votre’s excitement about GraphQL is contagious and I’m anxious to get my hands dirty. Andrew Bennett has some great tips in his Sustainable Testing talk. Daniel Azuma did a great job showing how we can mix and match Docker with traditional OTP deployments for unique benefits. Some time slots were competitive for my attention. I sadly missed Boyd Multerer’s Introduction of Scenic and Eric Oestrich’s Going Multi-Node session which both were well received from chat in the hallways. I’ll be sure to watch them on YouTube in the week ahead. In fact the majority of the conference keynotes and sessions are already posted on YouTube if you want to take a look.

Despite my general shyness, the community was very welcoming and friendly when I put myself out there. I had some great conversations during breaks and lunch. Hopefully these will continue on the community Slack and forums — I need to spend some more time with those.

Finally, everyone is hiring. Almost every speaker who represented a company said they were hiring. While I’m not looking for full time employment its relieving to see such hiring interest in a more niche language than say my current source of income, iOS.

Next year ElixirConf will be in Denver and assuming I find a way to keep Elixir active in my development schedule (I have a potential Elixir subcontract in the fall as well as some personal projects) I plan to be there.

For more on Elixir check out its homepage.

Photos

Self Employment Estimate Numbers

In a world of being self-employed you need to constantly be evaluating your finances. I was lucky enough recently to finish paying off some long standing debit and so I did a revisit. Today I want to share with you how I do my estimate numbers and hopefully you can use some of these ideas to help plan your own independence and/or make sure your current indie life is in good shape.

The software I use to do this is Soulver. Think of it as a really smart text editor for crunching numbers. Watch the demo video on their site to see it in action. If you are not interested in Soulver, any spreadsheet should do fine. Just keep it on file somewhere so you can come back and rework it as needed.

First thing you need is a list of personal expenses. If you are single you can do this yourself but if you are married or in a relationship where you share expenses get them involved too. You want to have a full and truthful collection of costs here. The goal is understanding what you need to survive and ultimately what you can cut to help make your dream that much more possible.

I did this by first using my credit card and debit card statements as a source. Every item needs to be recorded. Make three lists, some will be monthly expenses, some yearly expenses and some one-time expenses. Once you get done with the statement history try to brainstorm where the undocumented cash goes. Hopefully these lists will help.

Personal Monthly Expense Examples:

  • Rent / Mortgage
  • Home / Renters Insurance
  • Car Payments
  • Car Insurance
  • Car Maintenance
  • Car Fuel
  • Health Insurance
  • Expected Monthly Copays / Medicines
  • Netflix
  • Hulu
  • Monthly Gaming Subscriptions
  • Game Purchases
  • Eat Out Food
  • Spotify
  • iTunes
  • Patreon Gifts
  • Podcast Subscriptions
  • Haircut

Some of these items might be hard to quantify as monthly. If so just make a yearly entry for them.

Personal Yearly Expense Examples:

  • Christmas Presents
  • Birthday Presents
  • Yearly Clothes Budget
  • Vacations
  • Car Inspection

Once I have my yearly and one time costs I like to total them as a monthly expenses (YearlyTotal+OneTime/12) so I can later think in terms of months. This is fine for back of the hand estimates but if you need to plan out your money for specific times (summer vacation, fall back-to-school kind of stuff) you’ll need to do more planning.

Now do the same for your company.

Company Monthly Expense Examples:

  • Coworking Membership
  • Downtown Parking
  • GitHub Membership
  • Linode Hosting
  • Amazon Hosting
  • Books
  • Google Apps
  • Verizon Phone
  • Dropbox
  • Micro.Blog
  • Clicky / Web Statistics
  • Cushion / Finacial Software
  • Frontend Masters / Online Education

Company Yearly Expense Examples:

  • Two Conferences Events: $4000
  • Tax Preparation
  • New Mac every other year: $4000 × 0.5
  • New iPad every other year: $1100 × 0.5
  • New iPhone every other year: $1000 × 0.5
  • Vimeo PRO Membership
  • Apple Developer Membership
  • Trello
  • Hover Domains
  • Other Software

Notice how I distribute the costs of various hardware upgrades, which are bi-yearly, and do keep in mind this is all for rough estimating. I in-fact have held off on upgrading my iPhone recently so that’s extra money in the bank (kind of).

Next I work out my income:

## hours a week
## hours × $### per hour
{WeeklyRevenue} × 4 weeks
{MonthlyRevenue} - {TotalOfCompanyMonthlyExpenses} tax-free
{AdjustedMonthlyRevenueA} - 0.10 for Savings
{AdjustedMonthlyRevenueB} - 0.30 Tax Estimate Payments
{AdjustedMonthlyRevenueC} x 10 months // assuming 8 weeks off
{AdjustedYearlyRevenue} / 12 months of payouts
{AdjustedMonthlyIncome} $/month personal income

This last number needs to be able to cover your personal expenses. Using this formula you can get an idea of how many hours and at what rate you want to target for the year. Also, just covering personal expenses is probably a risky goal. You might want to up that savings calculation until you have 12 months of living expenses in the bank.

These things vary person to person, hopefully you’ve found this post useful. If I’ve forgotten anything blog your additions and share along. Thanks for reading.

WWDC 2018 Social Recap

I just got back from my WWDC 2018 Social trip and it was a lot of fun. I figured I’d do a quick recap of the social side and leave room to talk about the tech stuff as I get deeper into the session videos in the weeks to come.

Costs

With a nod to Manton’s lead I thought I too would share my costs in order to help others understand what is possible despite WWDC generally being a large cost these days.

  • Plane fare (Southwest, Philadelphia to San Jose Roundtrip taking the early and late times to save a little bit extra): $564.00
  • Hotel: ($125/night, 4 nights + taxes & early checkin fee). Booked early on event date assumptions, was cancelable.: $642.00
  • Airport cab fair: $25 each way.
  • WWDC conference ticket: $0 (Big savings here obviously. If you can get value from the labs, the $1700 ticket cost can pay for itself but if you just want to watch the sessions, enjoy the free video streams on delay).
  • AltConf conference ticket: $0 (I’ve bought the $300 Hero ticket in the past but held back this year since I’m on my own again and trying to keep costs down. Kind of feel bad considering how well I enjoyed the talks there this year.)
  • Food and drinks: ~$300 Made a point to get some supplies at a grocery store early in the week so I could supplement eating out with some in-room breakfast mornings and snacks.
  • Podcast and other event tickets: ~$50

Total: ~$1600

TL;DR: Make your decision about WWDC early and keep an eye on the rumored dates. Book early with hotels that are cancelable. If you need some more help, find a roommate to split hotel/cab costs with.

Events

On Sunday night I attended the sjMacIndie party and saw a lot of conference friends. Venue was a little on the warm side but plenty of space so it didn’t get too stuffy. I did not recognize much of San Jose from my earlier WWDC trips (2002-2004) but I did recognize this venue as the previous pool hall where the student scholarship winners once had a party. In fact it was at said party where I won an iPod which I later sold to help cover my plane fare back in the day.

You can check out some of the old WWDC 2002 Student coverage we did via Wayback Machine and this video, with footage from the pool hall, I was able to find and re-upload.

On Monday I watched the Keynote and State of the Union with friends at the hotel. We had to jump wifi networks a few times but overall was very successful. Afterwords I headed to the live recording of ATP podcast which was a lot of fun.

On Tuesday I took in a few AltConf talks and also attended the Micro.Blog meetup. Really enjoyed the Setapp talk about their growth/recommendations and the detailed talk on improving app startup times. I also took some time on Tuesday to work on my own project, finally breaking down a long list of tasks into a new Pivotal Tracker project so I can start to track things better.

On Wednesday did more AltConf stuff. Really enjoyed Paul Hudson’s review of new iOS 12 additions. Also had a good time in the Finding Product Fit lab. At night I attended the Relay FM podcast recording which went great. Afterwords I went to the Breakpoint / AppCampForGirls event. I didn’t stay too long though, place was really dark and loud. Also kind of irked me that there was a separate VIP section. I really dislike the social cliques that pop up at industry conferences and seeing the VIP thing put a bad taste in my mouth.

Aside: I’d love to see some options for non-bar night events at conferences. A 24 hour hacking lab with whiteboard grouping around ideas; maybe with room corners for Mario Karting or boardgames/poker. I like hanging out but I don’t like drinking too much and I can’t hear people over the crowds. I miss MacHack in many ways. Maybe I’ll lead by example some day should I ever dawn my event organizer hat again.

On Thursday I got to attend a few morning talks at AltConf before heading home. Of them I really enjoyed the review of what Firebase is offering these days. I’ve been watching them since before they were bought by Google. Like any third-party component you have to accept some risk but I welcome the opportunity to use them to bootstrap a new idea some time in the future.

The journey home took a long while. I didn’t sleep much but did enjoy a bunch of podcasts.

Overall WWDC 2018 Social was a great success. It was awesome to say hi to some internet/conference friends and hear how everyone is doing. Now that I’m home it’s time to jump into the technical content and see what the WWDC sessions have to share. I’ll post more on that as I experiment.