Categories
Nerd Fun Programming Self Improvement

Binge Watching Handmade Hero

For the last several weeks I’ve been obsessed with one TV show. It’s changed my viewing habits, my buying habits, and my computing habits. Technically it’s not even a “TV show” (if your definition of that term doesn’t include content created by non-professionals that is only available for free over the Internet).

But for me, a more or less typical Gen-Xer, Handmade Hero by game tool developer Casey Muratori has me totally enthralled as only must see TV can enthrall. I’m hooked and I simply must watch all 256+ episodes of Handmade Hero before I die (in about 1,406 Saturdays according to the How Many Saturdays app).

So first off let me explain a few things. Unless you are an aspiring retro game programmer or aging C/C++ programmer Handmade Hero will seem tedious at best and irrelevant at worst. There are much better and more modern ways to make a video game (like SpriteKit on iOS or Unity on any OS) but Casey promises to demonstrate live on Twitch.TV how to write a complete video game from scratch, without modern frameworks, that will run on almost anything with a CPU. He’s starting with Windows but promises Mac OS X, Linux, and Raspberry Pi.

This is a bold promise! When I first heard of Handmade hero, almost 2 years ago I ignored it. I didn’t know who Casey Muratori was and the Internet is littered with hundreds of these solo projects that tend to fissile out like ignobly failed Kickstarter projects.

But a comment in Hacker News caught my eye about a month ago. Casey had delivered hundreds of hours of live coding with explanations of arcane C, Windows, and video programming techniques! It’s all archived on YouTube and he’s still steaming almost every night! Awesomesause!

So I had to check it out. I started with Casey’s first video, Intro to C on Windows, and ate it up. I had to pound through the rest of that week’s archive. Because I have a family and a very demand job and kids and cats I had to purchase a subscription to YouTube Red so that I could watch Casey’s videos on or offline. Google is getting $10 bucks a month off me of because of Casey!

My keyboarding fingers ached to follow along coding as Casey coded. I used to be a C/C++ programmer. I used to do pointer arithmetic and #DEFINEs and even Win32 development! Could I too write a video game from scratch with no frameworks? I had to buy a Windows laptop and find out! Thus Dell got me to buy a refurbished XPS 13 because of Casey!

Even Microsoft benefited. I subscribed to Office 365 for OneDrive so I could easily backup my files and use the Office apps since I’m keeping my MacBook Pro at the office these days. I have discovered that a Windows PC does almost everything a MacBook does because of Casey!

I usually have less than an hour a day to watch TV so I’ve had to optimize my entertainment and computing environment around Handmade hero because at this rate I will never catch up to the live stream! But I’m having a blast and learning deep insights from a journeyman coder.

What could an old school game coder teach an old battle-scared industry vet like me? More than I could have imagined.

First of call Casey is an opinionated software developer with a narrow focus and an idiosyncratic coding style. He is not wasting his time following the endless trends of modern coding. He is not worried about which new JavaScript dialect he is going master this month or which new isometric web framework he is going wrestle with. He codes in C with some C++ extensions, he uses Emacs as his editor, he builds with batch files, and debugs with VisualStudio. While these tools have changed over the years Casey has not. He is nothing if not focused.

Thus Casey is a master of extemporaneous coding while explaining–the kind that every software engineer fears during Google and Facebook interviews. This means Casey has his coding skills down cold. He is unflappable.

Casey doesn’t know everything and his technique for searching MSDN while writing code shows how fancy IDEs with auto-completion are actually bad for us developers. He uses the Internet (and Google search) not as a crutch to copy and paste code but as a tool to dig deep into how APIs and compilers actually work. There seems to be nothing Casey can’t code himself.

Casey makes mistakes and correct himself. He writes // Notes and // TODOs in his code to follow up with as if he is working with team. Casey interacts with his audience at the end of every stream and is not shy about either dismissing their questions or embracing them. Casey is becoming a better, more knowledgeable programming before our eyes and we’re helping him while he is helping us.

Casey is not cool or suave on camera. He swigs almond milk and walks away off screen to get stuff during the stream. But nothing about Handmade Hero would be substantially improved if Casey hired a professional video production team. In point of fact, any move away from his amateur production values would be met with suspicion from his audience. Any inorganic product placement would fail. Dell, Microsoft, and Google should support him but stay the heck away least they burst the bubble of pure peer-to-peer show-and-tell that surrounds Casey.

I have 249 videos go to (and Casey has not stopped making videos)! I still don’t know if he delivers on his promise and creates an actual video game from scratch. (Please! No spoilers!) But I already know far more than I did about real-world game development where the gritty reality of incompatible file systems and operating platform nuances make Object Oriented Programming and interpreted bytecode luxuries a working developer can’t afford.

 

Categories
Nerd Fun

Most Improved Award for Windows 10

If there was an award for most improved in the world of tech I would award it to Windows 10. While I am a daily Mac user, I am no stranger to Windows. Actually, let me correct myself. I live inside iOS, work in Mac OS, play around on Windows, and occationally find need of an Android device. I think that makes me a good judge of where Windows 10 sits in comparison to all the major operating systems offered today. (Linux, yes I used to be into you, but Mac OS is more than enough UNIX for me.)

I’m old enough to remember when Macs were relegated to the less serious passions, graphics and science labs, while Windows machines were the sturdy beasts that bore our burdens during work. Ironically the situation seems to be reversed. If I have a job to do, that can’t be done on a phone, I need a Mac. If I want to fool around in virtual reality or inside an MMO at 60 FPS, I need a Windows PC. Windows 10 is Microsoft’s near miss at reclaiming the dull and boring world of the workhorse personal computer.

I had reason to buy a non-gaming PC laptop last week. I’m following along with Handmade Hero and since Casey Muratori is using a Windows machine to demo how to write a game from scratch I wanted to do the same. Via Amazon I bought a decent Dell XPS 13, refurbished, at a 50% discount. It’s a lot like a MacBook Air: Light, beautiful no-touch screen, and well constructed feel. The keyboard is a little loose as compared to a MacBook. And like a MacBook Air the graphic card and CPU are under powered but it’s totally usable for software development and the processing of words, numbers, emails, and webpages. This blog post is being written on it.

Windows 10 is Microsoft’s response to Mac OS and iOS. And it’s pretty easy to see that Apple is watching closely what Microsoft is doing with Windows 10 and discovering new ways to improve Mac OS and iOS. However, Redmond has to do a better job of learning from Cupertino.

Windows 10 is innovative and interesting but has many odd holes, rough patches, and weird leftover bits from Windows of the past. It feels rushed and as if there is only a small band of engineers behind it. It’s a tad ugly as if the UX designers called out sick a few days before polishing the new look and feel. If I wasn’t a 30 year veteran of Windows and PCs I’d be lost and confused when it comes to navigating around and installing software. As it is, I’m “Binging” basic operations where on the Mac I’d just be able to wing it.

Let me give you a concrete example…

Windows 10 has a system wide spell checking feature. While I was typing this blog post, in the sleek Edge web browser using the web-based WordPress text editor, I had to turn off Windows 10 spell checking. It was underlying entire paragraphs with red wavy lines! And yet I still have spell checking. So who is doing the spell checking if I turned it off? A mystery!

Another mystery is that at first I could not find the place to turn off spell checking in the Windows 10 Setting panel. I had to ask Cortana. She’s a nice lady and all but I pride myself on being able to find things in computer operating system. I now know that spell checking is found under Settings->Devices->Typing. What threw me was “devices” (that makes me think of something like a printer, a separate device) and the lack of the term “keyboard” anywhere in the UX.

It’s as if the person who designed the Windows 10 Settings panel is a young AI just figuring out object from subject and parts from wholes. I keep running into little stumbles like this along the way as use Windows. I’m sure there is a punch list at Microsoft with a thousand tiny little fixes that are not mission critical but would make a big difference in how the end-user’s experience of Windows 10 flows.

So, good job Microsoft. Better than I expected. Keep it up. I suggest hiring a really mean, obsessive, and uncompromising UX designer and putting her or him in charge of Windows 11.

Categories
Programming Tech Trends

The Desktop Strikes Back

I was surprised and delighted by Microsoft’s introduction of the Surface Pro 4 and and Surface Book. I have a feeling that Microsoft is doing something really interesting: Bringing back the general purpose personal computer. Wait, wait, I know what you are thinking! It’s all about the phones and pads and the Internet of things! I get it! I’m not some old guy pining for the days when PC were king and 640K RAM was a luxury. Well, actually, I am that old guy. But I have not personally coded a desktop app, native or web, since 2010. Everything thing I do for work or play is meant for mobile devices. I’m usually the guy in the conference room saying “We need to focus on Mobile!” and “kids today don’t even know what a desktop is.”

But Microsoft and some of the recent changes to Mac OS X in El Capitan are making me think there is some life yet left in the PC.

While Apple is targeting coffee shop-consumers by making MacBooks  lighter but less powerful or targeting highly specialized markets with high-resolution workstations, Microsoft has reminded me that there is a vast middle in this market. And that middle is still mostly using desktops that run Windows. There hasn’t been growth in the middle for a while but then again there hasn’t been much product to spur growth.

Every year I want to buy a new phone. I swear have every iPhone model in a drawer starting with number 3. But buying a new computer is something I do only when I absolutely must. There just isn’t any reason to upgrade a contemporary desktop or laptop. And looking at where Apple and Dell and other PC manufacturers were going it seemed to me that PC were just getting specialized. The middle ground was a nomad’s land of crappy plastic slow PC encircled by ultra-lights and gaming rigs.

A while back I bought a Surface Pro 3 with it’s pen, keyboard cover, and Windows OS. I found it… interesting. A had to pair it with an Apple Wireless Bluetooth Keyboard to get a decent typing experience. And Windows 10 is still a little rough. Ok, Windows 10 is a lot rough. And confusing. But it getting better.

I feel a great nostalgia for all things from the original Bill Gates/Steve Jobs era. I will probably end up acquiring a Surface Pro 4 or a Surface Book. I’m pretty sure either of those products will not displace my iMac 5K as my go-to general purpose computer for coding, blogging, podcast editing, and cartooning. (Everything else I do, I do on my iPhone.)

But heck, I want Microsoft to win here and bring the PC back to the forefront of the consumer electronics revolution. So here are five suggestions or tips for MS that would have me running to the Microsoft Store as if they were selling Tesla Model Xs at a deep discount!

Tip 1: Really rethink Windows and the UX of a desktop operating system.

I know MS got in trouble for removing the Start Menu. But seriously: There is no Start Menu in Mac OS X or iOS because for the most part the whole operating system is the Start Menu. Go back and look at the Xerox Star if you have to. Don’t try to mask complexity with a handful of easy-to-use screens hiding the real OS. When I worked at Apple we had a saying: “Every pixel counts.” It’s clear to me that on Windows some pixels count more than others.

Tip 2: Bring back desk accessories

I know that both Apple and Microsoft have failed at providing consumers with a library of little single-purpose applets that share the desktop with the bigger multipurpose applications. But, as guy who once wrote a mildly popular Yahoo Widget, there is real consumer value in DAs. I think the original Mac OS and PC DOS got it right: Apple’s Desk Accessories and Borland’s Sidekick provided little utility functions that were easy to access, simple to use, and fast to summon and hide. By contrast Apple’s Dashboard Widgets and Microsoft’s Desktop Gadgets were slow and clunky. These decedents of the desk accessory were too ambitious and missed the whole point. I want “info at my finger tips.”

Tip 3: Fix the menu bar or retire it

I was so excited when Mac OS X El Capitan enabled me to hide not only the taskbar but the menu bar as well. I hate the menu bar! It’s usually a dumping ground for every feature of an app randomly arranged. Long ago the menu bar had a formal structure. It was drilled into my head as a young software developer that menu titles were nouns and menu bar items were verbs. If I had a document menu then all the menu items were the operations that could be performed on documents. But right from the get-go both Apple and Microsoft ignored that simple and powerful idea. Almost all Windows and Mac apps have separate “File” and “Document” menus. I know that files are those objects that computer applications store data into but we tell consumers to call those things documents. Everyone is confused. And then there is the universal “Edit” menu which should be called the “Selection” menu. This might seem like small potatoes but I’ve learned trivial details are the stumbling blocks that kill product adoption.

Tip 4: Make the desktop a first class entity

Most flavors of Unix are doing the Desktop right and Apple and Microsoft are starting to get clued in. It should be very easy to set up and arrange windows on a desktop and have them stay that way for eternity. Like really forever and definitely between restarts and system updates. Adobe understands this and gives each of its apps a layout manager that allows artists to personalize and save their workspace. Context is everything. Humans are dumber in unfamiliar contexts and smarter in well known contexts. A desktop is really just a context of virtual objects. I think phones are easier to use, not because they are better designed than PCs, but because they naturally just have one context, one screen, at a time.

Tip 5: A list of five more tips

Bonus round!

  1. Don’t go too far trying to make the desktop UX the same as the mobile UX. They are two different use cases. Shortcut keys, content menus, and over lapping windows are great features and can’t really be replaced by gestures, hard presses, and split screens.
  2. Bring back BASIC or Hypercard or some kind of programming environment intelligent non-computer scientists can utilize to create real apps on their own. It’s not about workflow automation. Do not copy Apple’s lame Automator or evil AppleScript.
  3. Clean up your Windows Store. Be even more picky than Apple. Keep out the spam, copy cats, and useless garbage. But make sure users can continue to download and install non-certified apps. I know it’s risky but it’s also capitalism.
  4. Reactivate Windows third party developer base, not by enabling quick and dirty ports of websites into Windows apps but by continuing to empower and simplify and open Visual Studio. I went to one of the very first Windows developer events in Redmond in the early 90s. I got to shake Bill’s hand. I’m sure he doesn’t remember me but I really wanted to write Windows apps after that.
  5. Continue to revive and refine the general purpose personal computer that is great for everything and works for everybody. I don’t want or need a workstation. I do want to get a lot of work done. Instead of thinking like Apple, think like the Microsoft that re-packaged and made affordable the hoity toity graphical user interface in an open system for schools, small businesses, and nerdy kids.

Even if Microsoft succeeds with the Surface Pro 4 and Surface Book, the PC market will most likely continue to look to Cupertino and Redmond steal marketshare from each other. But unlike smart phones, pads, and household items with embedded microchips, PCs are programable–by users. And that is something worthy of a battle with the Empire.