Hello Again

Last Thursday’s event was a pretty hard hit to me. I have a lot of feels about the event, but this piece probably captures them better than I can articulate right now, The Future of the Mac, or, What The Hell Just Happened.

To me, Thursday’s event signaled one thing for me, and maybe I’m completely wrong, but the Mac is officially over. The sunset is calling, and until that sunset arrives, this is the future:

The MacBook Pro hardware setup
The MacBook Pro hardware setup

And fine… I could resign myself to that if Apple would throw a bone and actually give us the option to build out a computer that fits our hardware needs and not just what, at this point, is just a check box for size and weight reduction. I know, blasphemy, right?

Apple, the MacBook Pro is not a pro-level computer. It’s simply not.

You want to see what a pro-level laptop looks like? Look at the Razer lineup. They are crushing it on terms of performance and style in hardware design. Sure, it looks a lot like a MacBook Pro, but isn’t that what we want?

The 14” Razer is 17.9mm (height) x 345mm (width) x 235mm (depth) and weighs between 1.89kg and 1.95kg.

The 15” MacBook Pro is 15.5mm (height) x 349mm (width) x 240mm (depth) and weighs 1.83 kg.

So yeah… we are talking a mere 2.4mm (less than 1/10th of an INCH!!!) and 0.06kg or 0.12kg.

Yeah yeah, specs only tell part of the story and there of course is no Touch Bar, or Apple Pay, macOS in the Razer. And yes, the battery life in the Razer is not as good. All trade-offs. However, you’re marketing these as for professionals, so let us in on the decision for what we think is import.

Look, Apple, you have two lines of laptops that already cater to the ultra-portable and ultra-light: MacBook and MacBook Air. Would it be so difficult to actually build a real MacBook Pro line? Here’s the thing, you don’t even need to change the current shipping devices (other than more RAM, I mean, come on!) other than add one more item to your accessory stack: external docking/graphics enclosure.

Would I prefer the option of putting an Nvidia 1060 or 1080 in the laptop: yes, of course. However, I’m willing to face the truth if you are: we are living in a transitionary period, so let’s compromise somewhere.

I guess my point is this: Apple, stop telling professionals what they want and need in their machine. If you’re not going to be willing to build those machines, let companies like Razer build them for you.

Hello Again

On Demand Resources and Games

Alright, this article over on imore.com that was linked by Darring Fireball talking about how on-demand resources isn’t going to be a problem for games got me a bit riled up.

On-demand resources is fine for some classes games. However, this is not true for games like XCOM. The desktop version of this game clocks in at 20GB (Enemy Within)1. There is no amount of tagging, stripping, or slicing that is going to get a company like Firaxis Games to deliver a desktop quality game on Apple’s supposed desktop class hardware because desktop (and console) quality games are bigger than 2GB.

Let’s take the defense of this, from the article:

But: You have a 4GB game! How do you get those other 25 levels?

Easily, thanks to the power of background processing. On-Demand Resources works in conjunction with whatever your user is actively accessing, and will flush older, unused content to make room for additional resources. If a user is playing level 24 of your game, the system automatically flushes a few 100MB tags of old levels (say, 1-5) to make room for levels 25-30. As the user gets further into your game, older levels drop off and get deleted from the Apple TV, and your new levels (also in tag bundles) get installed – all in the background.

Let’s just play out this scenario: I am playing a game and I’m on level 25 (older levels are now purged because 2GB is enough for any game). Now, my son or daughter comes in and they want to play, but they need to start a new character because they haven’t played before. Ok, they to go play the game…

beach ball of death

Oh… pardon me, I need to download those levels… Meanwhile, while this is downloading, other resources are being dumped out (I sure hope they are not the levels that I’m playing). You see, there’s no telling how much overlap between game assets are going to be between levels 1-5 and 25-30. If a game is 10~15GB, it’s reasonable to assume that there is not a lot of overlap of resources between levels as you progress through the game.

The kids get tired of waiting for the levels to download, so they go do something else. I then go and try to play my levels, and of course… data has been purged and more assets are coming in. This is fun!

There is another description for this phenomenon in computer science: thrashing.

Now, this probably works better of iOS devices because those are mostly single-user devices. However, the TV is centralized and consumed by multiple individuals.

It’s decisions like this and the game controller decision (which is a fascinating case of stealth documentation changes) that tell me Apple just doesn’t care to really enable high-quality gaming on tvOS. Instead, companies are going to basically bringing their iOS versions over, which I find so disheartening. Especially since disk space is so cheap these days; put a 1TB fusion drive in the device and charge $50 more or stop teasing us with actually making the iOS and tvOS platforms a contender for more than just casual games.

  1. Now, Firaxis stripped out a LOT and was able to get the iOS version down to 2GB. However, it took a big hit on what it could actually deliver.
On Demand Resources and Games

Modern Web Development… /sigh

Yesterday I thought it would be a good idea to see just how big an article on my blog was…

Profile Picture: 4.5MB for the size

Um… 4.5MB for an article about coding? That seems, a bit excessive?

So I went digging in to see what the heck was going on. Over half of that was for simply adding Disqus support. Seriously? Over 2MB for a comment system? And a comment system that can't even properly format posts? WHY?

Alright, so that's gone.

Where's the rest of it? Well… another 400KB or so was for the webfonts that I was using. Do I think the previous font looked better? Yeah. But come one! 400KB for slightly better looking prose. Nope, sorry, gotta go.

Another culprit of wasted space was the "me" picture on the left. It was a PNG file that was roughly 600KB. Yikes! The PNG version is down to 29KB.

After a bit more tweaking, I got the site down to about 360KB (for articles, content with images is obviously larger). This is still stupidly large for what is actually going on. Also, the page load time has gone from 1.42s down to 143ms.

Profile Picture showing the latest results

But I still have a bunch of cruft in there. Unfortunately, this last layer, to actually stream-line out, requires a complete rewrite of everything in there.

This is where I have the biggest issue with development today, and it's not just web developers: developers have become complacent in being wasteful for the benefit of their own development ease instead of considerate of the time and resources they are taking from customers. Every article I had on my page was costing you 4MB of bandwidth (minus any local caching). It took me about an hour of time to reduce the size and render time to about 10% of what it used to be.

We should all strive to do much better than we currently are.

Modern Web Development… /sigh

How Much Is Enough

I was driving back from lunch with a friend today thinking about Swift, its strongly-typed nature, and the arguments I've heard about why strongly-typed is so much better. I do not know how to explain my position very well to someone else because a lot of it is subjective.

But then I remembered a poem I've seen at Jimmy Johns.

The American investment banker was at the pier of a small coastal Mexican village when a small boat with just one fisherman docked. Inside the small boat were several large fin tuna. The American complimented the Mexican on the quality of his fish and asked how long it took to catch them.

The Mexican replied, "only a little while."

The American then asked why he didn't stay out longer and catch more fish?

The Mexican said he had enough to support his family's immediate needs.

The American then asked, "but what do you do with the rest of your time?"

The Mexican fisherman said, "I sleep late, fish a little, play with my children, take siesta with my wife, Maria, stroll into the village each evening where I sip wine and play guitar with my amigos, I have a full and busy life."

The American scoffed, "I am a Harvard MBA and could help you. You should spend more time fishing and with the proceeds, buy a bigger boat, and with the proceeds from the bigger boat you could buy several boats. Eventually, you would have a fleet of fishing boats. Instead of selling your catch to a middleman you would sell directly to the processor, eventually opening your own cannery. You would control the product, processing and distribution. You would need to leave this small coastal fishing village and move to Mexico City, then LA and eventually NYC where you will run your expanding enterprise."

The Mexican fisherman asked, "But, how long will this take?"

To which the American replied, "15-20 years."

"But what then?"

The American laughed and said that's the best part. "When the time is right you would announce an IPO and sell your company stock to the public and become very rich, you would make millions."

"Millions?" asked the fisherman, "Then what?"

The American said, "Then you would retire. Move to a small coastal fishing village where you would sleep late, fish a little, play with your kids, take siesta with your wife, stroll to the village in the evening, sip wine and play your guitar with your amigos!"

I'm the Mexican fisherman and you're the American telling me how great strongly typed languages are.

How Much Is Enough

Striving for Simplicity

When I was working on the my new blog layout, I had two primary goals in mind:

  1. Cleaner feel with better functionality
  2. Seamlessly integrate with the tools I enjoy

Tidy up the Mess

I think I've captured #1 well enough, for my tastes anyhow. I know that there are bugs in the site layout1, but in the spirit of my "ship early and ship often mantra", I think it's more important for me to get the results that are "good enough" out there so that I can improve the things that matter and to catch issues that I simply will not run into2.

Workflow Improvements

Another way to capture this is: "quality of life improvements".

My writing tool of choice is Ulysses. I think it's great. It offers nearly everything I want in a Markdown editor. However, I write technical content with code snippets. My previous workflow was a bit terrible:

  1. Write the initial post in Ulysses
  2. Apply the kramdown syntax using Brackets
  3. Run jekyll serve -w to view my blog update
  4. Go back to step 2 for any edits

You see, once I move from step 1 to step 2, I cannot actually use Ulysses to do the editing anymore. Some of this is because of quirks with the app, others because of limitations of not supporting the kramdown syntax, or fenced blocks well.

But here's the thing: I really like Ulysses and using that tool is more important.

So, with the new blog design, I set out on how I can remove step 2 from the process. It's going to be just me and my editor. I know exactly what the markdown should look like in Ulysses, so there is no need to "preview" the pages anymore. Simply write, edit, and push. Done.

Optimize for You

The moral of the story is quite simple: optimize for the things that are important for you. When you do that, realize that you need to make compromises in other areas.

That's OK.

Here's a sample of what my new layout should look like for a full content blog post: https://owensd.io/sample.html.

With one exception, I am able to achieve all of what I want with standard markdown3. I find that very liberating4.

  1. Especially in IE11… oh man is that a train wreck. It's probably just some CSS prefix I forgot, I'll get to to it. =)
  2. I run with the OS X setting of "Show scroll bars: When scrolling" option. This means I never see those large fat scroll bars, even when I have an external mouse plugged in. Of course, others run with a different option and that exposed some bugs in my design.
  3. The actual standard… http://daringfireball.net/projects/markdown/
  4. If you're interested, the exception is the need to apply a specific class to the blockquote I use for image captions. I cannot figure out how, with CSS only, to select that nested blockquote and style it how I want.
Striving for Simplicity

Migration from Medium

Well, today is finally the day I’m announcing my departure from medium.com and migrating to my own blog being hosted over at GitHub Pages. There are many reasons for the transition, but the big ones come down to:

  1. Medium is simply not a very good platform for technical blogs. Code samples are too hard to do and the gist support is a joke.
  2. It seems every time I log in to start writing a new blog, the interface has changed; and seldom for the better. I do not want to have to learn how to use the editor every time I want to write a blog.
  3. Better control over what my site and content looks like.

So with that, good-bye Medium, hello owensd.io.

Migration from Medium