Student Advice

A student asked me for advice for what to focus on getting into the compsci field. Here’s what I said.

I have two pieces of advice:

  1. Stay curious. If you come across something you don’t understand, keep digging till you do.
  2. Start building. The best way to learn is to do. Build a web page, build an app, build a server… whatever direction you want to go, pick a project and start digging in. As you go you’ll hit obstacles, you’ll find things that you don’t understand, when you find yourself there, remember number one and keep at it till you’ve figured it out. Honestly that’s how I’ve built my entire career.

My personal bias is to recommend the devops path, and the first step on that path is to learn Unix. You can download Linux (a Unix clone) for free, or if you have a Mac can pop open the Terminal app and go to town. Figure out what the shell is, what common commands are available to you, and start writing out a personal library of scripts.

Unix is everywhere, it took over the world and no one even noticed. Unix is the core of macOS, iOS, Android, ChromeBooks, and every server running in the cloud. It’s in Internet of Things devices, it’s in your smartTV, it’s probably in your routers and cable modems, and if you do a search for “Unix or Linux Sysadmin” or “devops engineer” you’ll come up with thousands of available jobs.

Here’s an easy trick to get on the path to knowing your computer, once you are in a Unix or Linux environment, run “ls /bin”, that will show you some of the basic programs available to you, pick one, say, “dd”, and run “man dd” and read the manual page on the command. Keep going till you know what every program in the list does.

Secondly, and very closely related to learning Unix is learn networking. Learn the TCP/IP stack, the three-way handshake, basic subnetting, Literally everything is networked, so a solid understanding of how it all works can only help. It’s all just signals down a wire.

On a more practical level, I recommend opening up a Github account, buying a domain name, and using Github to host a webpage with Jekyll. Use that webpage to write about what you learn. Share your projects. Even the experience of getting the Jekyll site up and running is a good exercise. It’s complicated to get started, but once you figure it out, you’ll have a good base for how a lot of things work in industry.

The combination of doing, then writing, helps with your learning, and it gives back to the community for the next person who wants to learn. Come to think of it, I haven’t done enough of that myself lately.

As far as sites to read… well, you could follow Hacker News although I don’t. I know quite a few folks who do. I prefer to follow individual blogs like cks. The tech industry was built, originally, by academics and interested folks building and sharing what they’ve learned, and… well, at it’s core it still works that way now.

I hope it’s good advice, and I wish the student luck on the path to their new career.


Healthy Tech

I deleted my twitter account this morning. I’ve been on Twitter long enough to remember when it was spelled twttr, and there was a SMS bridge to a specific number, 40404 if I remember correctly. For me, it’s always been a fun place to chat about Apple and technology. Twitter was a place to learn about new tech and be part of the community of developers, designers, and enthusiasts. Through Twitter I’ve found apps I use every day, books that I love, Authors to follow. We’ve chatted live through Apple keynotes, commiserated through hard times, and found common interests across the world. But… that’s just not what Twitter is anymore. At least not to me.

I quit Facebook a few years ago because I was using to to get into Political arguments. Today I quit Twitter for the same reason. The old Twitter I loved is still there, but it’s buried under the weight of supporting modern society. Politics makes my blood boil, the hypocrisy, the mindless parroting… it’s not good for me to be involved in, and I find that it takes only the slightest provocation to lash out and start an argument. Of course, in my mind at the time, I’m trying to prove a point, I’m debating, but that’s not the truth. The truth is that it doesn’t take much for me anymore to want to argue, and that’s just not healthy.

A friend suggested I watch The Social Dillema on Netflix. I initially resisted because I figured that I’ve been in the tech industry for so long I know what the AI is doing. I think more people should watch the show, but I didn’t think I’d learn anything I didn’t already know. But, having the day off today and nothing better to do, I watched it anyway, and I’m glad I did. There was nothing too revelatory in the show, but while watching it I did begin to second guess my participation in any platform that contributed to the decline in mental health and societal structure, and also contributing to a rise in depression, self-harm, and suicide. This is horrifying.

The crux of The Social Dillema is that technology has moved faster than our brains have had time to adapt, not to mention our societal norms and laws. We’ve gone from having to be physically together to socialize to socializing through a screen in a single generation, and now we are starting to see the effects. For me, I’m taking the War Games approach… sometimes the only way to win is not to play.

That’s not to say that I’m abandoning technology altogether. I still believe that humans can and will solve the biggest problems we face through technology. Climate change, overpopulation, pandemics, food and water shortages can all be overcome through technology. I believe in a future where clean energy powers our vehicles, green cities provide healthy and sustainable living communities, where we’ve reversed the effects of climate change, and where, through the building of this future, everyone has meaningful employment.

Furthermore, I believe in personal technology that works for you, where your privacy is paramount, and the systems we choose to use respect our time and mental health. So far I think Apple is doing a good job of helping to build this future, showing the path forward to a sustainable business model that prioritizes privacy over advertising. They could be doing more, but I think they are doing better than the other big players in the industry.

When I pick up my phone I want to know that I’m not going to get lost in an endless feed, that I’m not going to wind up arguing with a stranger, or worse, a friend. I don’t want to feel left out, insufficient, or incomplete. I want my technology to help me feel more on top of things, to help me make better choices, to eat better, sleep better, get more exersize, be more productive at work, and remember things for me that I might otherwise forget. I want technology to help me learn new skills, and help me hone old ones. To be the bicycle for the mind.

The answer to the dillema is not to abandone technology… the genie is out of the bottle there. The answer is to be mindful about how we use technology, and to demand better from the developers building these services and devices.

I’m an optimist. I believe we can have healthy relationships with our technology, and I believe that we can overcome the hardest problems our society faces. To do so we must understand the problems, generate in ourselves the desire to overcome them, and then start working together.


Getting Small Again

It’s been quiet here at home lately. Grey and overcast, rain morning, noon, and night. A good time to rest and recover from a lot of busy weeks. I’m essentially an introvert, and while I enjoy visiting it tends to take a lot out of me. I’ve always preferred long conversations over coffee to loud concerts or clubs. I’m on the couch this morning, my wife’s dog is next to me. The dog kept us up a lot last night. It’s nearly silent, but for the breath of the dog and the clack of the keys.

I watched “Amazing Stories” on TV the other day, the one about a guy who went back in time to 1919. While he spent most of the show trying to get back to 2019, he found that he actually preferred life 100 years ago and wound up staying. It’s an interesting thought experiment to consider the things that we’ve gained over the past century, like civil rights, women’s rights, advances in medicine, heating and cooling, the ability to stay in touch over long distances, but also to think about the things that we’ve lost along the way too. Independence, civility, an overall slower pace of life. I live in a small town and I think a lot about what could revitalize it. Folks that lived here for a long time say that it used to be different, the buildings that are crumbling and empty around the square used to be stores that were stocked and full, kept in top shape. A person could walk down to the square and see their neighbors going about their business.

The butcher, the baker, and the candlestick maker.

What I miss is the opportunity for someone to open a shop selling what they’ve made with their own hands, and be able to make a living off of it. People in town say that things changed when the state put in a highway that bypassed the town, but I think that was only a symptom… a sign that pointed to a real cause. Things fell apart because people stopped shopping in the town. They stopped shopping in town because they could get things cheaper if they drove 20 miles to shop at Walmart instead. The desire for cheap goods has decimated small towns and small businesses, making us dependent on massive corporations that exploit the world’s poorest and most vulnerable to make a $5 t-shirt.

What I wouldn’t give for a generation of makers and independents to turn this around. Sometimes I like to write or envision future scenarios where that’s taken place. Not that there’s not a place for big companies. Something like the MacBook or iPhone simply can’t be created by a mom & pop shop, but they could definitely be made here, by us.

We still have a fantastic barber and a, well, mediocre doctors office in town. Although, of course, the doctors office just recently stopped being independent and is now part of a regional system. Now when I call to make an appointment I get re-routed to someone 25 miles away instead of a mile down the road. I was in the office one day when an elderly gentleman was waiting in line right in front of me, and I asked him about how things had changed over the years. He didn’t have much time to talk but the description he gave was striking. I asked him what happened and as he was walking out the door he turned and said “everything got big, big, big!”

I don’t want to go back in time to 1919, I rather enjoy the privileges and comforts that we have now (especially considering that the idealized past so many think about was generally only great if you were white and male), although I also believe that a lot more of us could benefit from living more of Teddy Roosevelt’s “Strenuous Life”. I want to go forward. I want to live in the future where we’ve figured out these things. Where we’ve created self-sustaining communities of independent makers, linked by high-speed rail systems and electric cars powered by the wind and the sun. Where we all grow gardens full of good food, and we know where the goods we buy come from, and maybe even know who made them. Where we know our neighbors. Where we know the mailman’s name and recognize his uniform and know approximately when to expect him. Where teachers are revered for the responsibility they have. Where the ability to fix a broken thing is given the respect it deserves.

I wish I knew how to make that vision a reality, and now in this isolated time of the Coronavirus, it seems more relevant than ever. We spent too many years getting big, what we need now is to get small again.


Cloud Backup with Arq and B2

I’m a fan of the three-pronged approach to backups. I’ve got two different drives attached to my iMac, one for Time Machine for hourly backups, and the other for SuperDuper! for nightly clones of the internal drive. For many years I’ve also had BackBlaze running for a third off-site backup in case the house goes up in flames. At $6 per month it wasn’t bad, but at the beginning of the year when I did a review of subscriptions and decided what should stay, it didn’t make the cut. Not having an off-site backup bothered me though, and I considered starting it back up again till I heard the guys on ATP talking about Arq and thought I’d give it a shot.

What I like most about Arq is that it’s a standard Mac-assed Mac app. It fits in with the rest Mac environment, is light on resources, and just works as expected. The developer, Stefan Reitshamer, has been working on it since 2009 and has built a good business around it, releasing a Windows version and their own cloud backup option.

At $50 Arq itself is a bit pricy, but by pairing it with Backblaze’s own B2 online storage I’m only paying around $1 per month for the storage. Compared with the normal Backblaze service price of $6 per month, I’ll have recouped my money after five months of using Arq. My personal dataset that I’m backing up isn’t that big, but it is important.

I like having more control over my backups, and knowing that if I add something to the Arq backup set that it’ll stay there, no matter if I disconnect a drive or if the data is deleted from my Mac. More control means that there’s more setup than Backblaze or Crashplan, but that’s a tradeoff I’m willing to live with.


Over the Air

I recently dropped our cable service and switched our home entertainment system to be centered around the Apple TV (the box, not the service), with an app installed to watch live news, sports, and other local channels. Here’s how I did it.

I used the otadtv.com tower locator to find that there were several over-the-air broadcast antennas within 30 miles of us. Since we live in Iowa and the terrain is almost entirely flat farmland, there’s very little to get in the way of a signal.

Equipment

  • RCA Outdoor Yagi Satellite HD Antenna - link
  • Tablo Dual Lite OTA DVR - link
  • Seagate Portable 1TB External Hard Drive - link
  • Apple TV HD - link

The RCA antenna is inexpensive, and mounted cleanly on the post on my roof recently vacated by the old Dish antenna we haven’t used in years. The one downside to the antenna is that the converter that screws into the antennas dipole was incredibly fragile, I accidentally snapped off both ends screwing them on by trying to screw them on too tight. Luckily the part is only $2-$4 at any local hardware store, so I bought two and kept one in a cabinet just in case.

The Tablo box is a DVR that hooks straight into the coax coming from the antenna. It then hooks into the local network either by ethernet, which I do, or over the wireless network. Since the box was going to be sitting right next to my modem and Eero router, it made sense to plug it straight in. The 1TB hard drive hooks into the Tablo box for DVR and commercial skipping capabilities. Finally, since I wanted the same experience upstairs that we have downstairs I bought a second Apple TV, but since the TV is so much smaller I opted for the slightly less expensive “HD” version instead of the “4k”. When and if we upgrade the upstairs TV to 4k, I’ll probably just buy another Apple TV box to go along with it.

Home Network

We upgraded our home cable service last year to a bundle of TV channels, home phone service, and internet. The only thing I was interested in the was the internet, but my wife enjoyed a few shows and liked having the cable, so we kept it. We needed two cable boxes, but only one of the boxes they delivered was a proper DVR, the other one would stream shows from it across the network. There was a ridiculous coax network setup when Mediacom installed the cable, but I changed it so each cable box hooked up over ethernet to an Eero router to communicate over the home network, and the boxes could download the tv guide from the web.

The new setup has each Apple TV plugged into ethernet into an Eero router, networked to the base Eero where the Tablo box is hooked up. I’ve got the Tablo app downloaded on the Apple TVs which gives me a single interface for movies, tv shows, and local news, weather and sports. As a bonus, I can now watch the morning news on my iMac or MacBook in Safari by visiting my.tablotv.com. We are still in the testing things out phase, but assuming everyone’s happy with the setup I’ll cancel my cable and drop back down to just internet service. With the reduction in price this setup should pay for itself in about four months.


How Long Will macOS Be Unix?

I’ve started to worry about the Unix core of macOS. Possibly unnecessarily, but there have been a few troubling signs over the years, the biggest of which is obviously the lack of access to a decent development environment on iOS. On iOS, web development is possible, but only in the barest, most basic sense of the term. As soon as you need to do anything even remotely complex, like build a Django project, run the server locally, and browse the site for testing, you are out of luck. That’s fine, because it’s iOS and I don’t need to do development on my phone, but for years Apple has been saying that they thought iOS and specifically the iPad was the future of computing. In the past few months we’ve seen other signs that point towards Apple looking to simplify their products to the point where they’d no longer be usable for me.

Another obvious sign is that Apple has deprecated what they call “scripting languages”.

Scripting language runtimes such as Python, Ruby, and Perl are included in macOS for compatibility with legacy software. Future versions of macOS won’t include scripting language runtimes by default, and might require you to install additional packages. If your software depends on scripting languages, it’s recommended that you bundle the runtime within the app. (49764202)

Well, fine, for years we’ve needed to download the Xcode Command Line Tools to install git and a compiler. I imagine (hope) that future versions of the download will include the scripting languages needed to bootstrap Homebrew.

What bothers me the most though is that Apple has removed the man pages from their online documentation. Even the old archived links no longer work. In fact, if you start at developer.apple.com/opensource, and follow the link at the bottom to “View Unix Documentation”, you are brought to an extremely out of date archive page with five (5!!) links, none of which are relevant. I’ve been listening to Swift and Objective-C developers complain on podcasts about how the language documentation is incomplete or out of date, but that’s nothing compared to what’s been done to the Unix documentation. So far, the best we can get is doing a search on the open source repository… until that goes away.

I use a Mac because I love the simplicity and reliability of the user interface coupled with a solid Unix core, and because the indie developer community produces some of the best software in the world. The text editor I’m using now for example, BBEdit. Personally I think it’s clear that the Mac’s model for a software ecosystem is the best we’ve been able to come up with. Provide a person with the ability to craft an application themselves, and be able to make a living off of doing so by selling to a global audience. This results in high quality, sustainable software built by people who care deeply about their work and are motivated to continue developing it. Not to mention that the community built between writers, developers, artists, and hobbyists is welcoming, friendly, and inclusive.

One of the reasons for the Mac’s success in the 2000’s and 2010’s is because it made such a great developer or sysadmin machine because of the Unix architecture. Being a Mac, if you never needed to know about it, you would never see it, but if you did need it, the Terminal app was always right there in the Utilities folder, pop it open and you’re off to the races. Unfortunately, given recent moves by Apple, I’m not sure how much longer I’ll be able to stay with the mac as my primary work machine. If I literally can’t get my job done, I’ll be forced to go somewhere else. That really doesn’t sound appealing to me.


Nostalgic Development

Like many my age, my first introduction to writing code was creating basic web pages, mimicking what I could find by right-clicking on a site and selecting “view source”. HTML was, and continues to be, simple. There are nested elements inside the top and bottom tags, and the styling sheet defines how those elements are presented. But, somewhere along the line we’ve collectively lost our way.

For example, I recently worked on a rather large Python web app. The basic concept of a web app is fine, it dynamically creates the HTML on the backend and handles the input from the page. A layer on top of the HTML, but a necessary one to develop anything dynamic. The Python environment has its own package manager, and bundling things up is fairly simple. Then the developers decided to do some modernization of the UI, which required significant modifications to the build pipeline.

Instead of a pure Python environment, we now needed Node.js. We aren’t running a node server, we only need it for the build process. Not to build the actual application, mind you, just the CSS and javascript. Node famously comes with its own package manager, npm, and thank goodness, because our site suddenly needs 899 packages in the node_modules directory. Building on top of node we’ve got React and webpack. Webpack is a bundler used to process javascript and SASS files to compile them into javascript and CSS suitable for deployment. Why do we need SASS? I have no idea. I also don’t know why we need to compile our javascript down into bundled javascript.

We’ve taken what was simple and beautiful and piled on so much clutter and junk that it’s nearly unrecognizable from the days of “view source”. As in all things, I’m sure there’s a lot about this situation that I don’t understand. I’m sure that the developers of these projects have good intentions, and see a definite need for their work. It’s just that I don’t see it. I don’t understand why we need these layers of abstraction.

I’ve been creating web pages for 20 years, in one form or another. I really thought that HTML 5 would be a renaissance of simple, usable web development, but for the most part, that hasn’t happened. Well, at least we finally got rid of Flash.


Think About the Future

Over the past twenty years the tech industry has greased the tracks of an express train to dystopia. As age creeps up on me and my hair continues to grey, I think back on the naive optimism of my youth with increasing nostalgia. We live in a world of constant surveillance, persistent erosions of privacy, a decline of democracy, and a rise of populist demagogues. Every new year becomes the hottest year on record, America has an obesity epidemic, and starvation is still a problem around the globe. The Amazon is on fire, opiate abuse is rampant, our kids are suffering from mental health problems, and everyone is too distracted by their phones to care. In short, we’ve made a mess of things.

Being a small part of this industry I can’t help but feel some responsibility. Although I’ve always been a small cog in a massive machine, I’ve been a cog with choices, and those choices did not always turn out as hoped. The easy and human response to our situation is cynicism and scape-goating, blaming the other without accepting any of the responsibility ourselves. I find this kind of laziness unacceptable, an abdication of character and integrity. It’s giving up. We can never give up.

Instead, I again choose optimism. Not naive optimism, but one born of experience and faith. I think most people are good, and clever, and when given the chance want to do their part. I think to share this optimism we first need a vision for the future. Not an apocalyptic future, but one where we’ve solved or are in the process of solving our current problems. Less Mad Max and more Star Trek. Or, somewhat more realistically, more of Microsoft’s most recent Future Vision video. Technology, humanities expression of boundless problem solving ability, must be the underlying foundation for what comes next.

One thing we must agree on before we can move forward is that we can’t go back. We can’t time travel, we can’t bring back “the good ol days”, and we can’t change our culture to recreate an imagined point in the past when things were better. The genie is out of the bottle; we have no choice but to move forward. As uncomfortable as that might make us, there really is no other choice, and anyone who tells you otherwise most likely wants something from you. Smart phones, tablets, social media, the Internet… they are all here to stay. What must change is how we use them. Technology is a tool and a mirror, how we use it shows us who we are.

To solve big problems we must be able to think clearly and concentrate. Luckily we’ve got smart people working on this problem like Cal Newport and Shawn Blanc. I submit that we need a societal shift towards a mentality that treats social media similarly to alcohol. Perfectly acceptable in moderation, can be enjoyable with friends, but improper at work or school. Or, maybe a British attitude is more appropriate, go ahead and have a pint of Twitter at lunch, then go back into your Eudaimonia Machine at work.

This ability to think clearly, without distraction or interruption, must also extend into our school system. We have adopted one-to-one programs across the country that give each child a laptop, and then expect them to have the self-control to be able to use that machine to study, take tests, and do homework. Most of the machines we’ve given them aren’t built to do that by default, they are multi-tasking environments that make it quick and easy to switch between tasks, an accident waiting to happen for an already distracted mind. Once again, we’ve adopted a technology without fully understanding its implications. Technology in education is a broad and deep topic that I hope to cover in more detail in the future. For now, I’ll summarize my position by saying that I advocate for devices like the re:markable e-ink tablet. Not less technology, but tech better suited to the task at hand. Technology that respects our humanity, with all it’s faults and vulnerabilities.

Once we can think clearly it will be much easier to spot partisan propaganda and “fake news”. Without the talking heads on TV, podcasts, youtube and twitter drowning out intelligent conversation we can start to have meaningful debates about things that really matter. As a society, we must indemnify ourselves against phycological warfare like Brietbart and Twitter trolls. We need to be able to identify attempts to promote the false and hateful ideology that seeks to divide us and reject it. The world is awash in mammoth-sized problems, it’s going to take all of us working together to solve them. We must be able to concentrate, then find common ground, and out of that a path forward.

And what is that path forward? What vision should we share? What do we want in the future? Clean air and water. Safe cities, thriving communities. An economy that supports small towns and big cities alike. Work that is respected regardless of if you work with your hands or your mind. Individuals with the freedom to live as they choose, and the responsibility to themselves, their family, and their community that comes with that freedom. The ability to produce and distribute enough food and fresh water that no one goes hungry or is forced to drink bad water. These problems are hard, but not impossible.

I can see a future where our differences are sorted out through vigorous debate. Where our technology is powered by clean, renewable energy. Where we’ve abandoned our dependence on the fossil fuels and plastics that are destroying our environment. Where our food, clothing, and other consumables are sustainable. This is not a utopia, I don’t envision a world without crime or war, but I do envision one with much, much less hate and violence than we currently have. We can turn the tide of the mental health crisis we are currently experiencing. We can defeat the hopelessness and depression that turns people to drugs. We can build technology that prioritizes individual physical and mental health, as well as privacy, security, and autonomy.

We just need to decide to do it. Let’s talk about how.


The September 2019 Apple Event

Several more professional sites have written longer and better articles about Apple’s recent event than I can do here. A few of my favorites in no particular order are John Gruber’s take, Ryan Christoffel and Alex Guyot cover the new iPhones and Apple Watch, respectively, at MacStories, Jason Snell’s take on hits and misses at SixColors, it’s always worth a click to read everyone’s pal Jim Dalrymple at The Loop’s thoughts on the event. And of course, the team at iMore has an entire section set aside for the many articles they’ve already written about what’s new.

This is not a review, just my thoughts on the new products after letting the dust settle for a couple days.

Apple Watch Series 5

I can see myself upgrading my Series 3 for the 5. The bigger screen that debuted in the Series 4 is attractive enough, but the always on screen in the 5 really pushes it over the edge. This is the one Apple device I use every day, all day. For almost two years straight now I’ve worn my Watch nearly every day.

iPad 7

I have many conflicting thoughts about the modern computer for the rest of us. Setting those aside for the moment, this looks like a great update to the entry-level iPad. Larger screen and finally a proper keyboard option, but the same A10 chipset. For $330 this is the right option for someone looking for a casual computing device to take notes, watch video, send and receive emails, and surf the web.

iPhone 11

When compared to the XR, the iPhone 11 is an incremental update with a slightly faster CPU, slightly better battery life, a big update to the camera, and worse color options overall. I’m not a fan of the washed-out pastels, especially when compared to the vibrant and fun colors of the XR. The yellow is especially egregious.

That being said, it’s important to note that this is how Apple rolls. One small incremental update after another, and after a few the iPhone 11 is a massive update in all aspects from something like an older iPhone 6S. Color preferences are just that, preferences. That this year doesn’t match mine doesn’t make them bad, just not for me. What we can’t ignore is that this year Apple ships yet again another incrementally better iPhone, one that’s better in all the ways that matter from previous versions.

iPhone 11 Pro Max Super Duper Cool XDR Edition

Apple really can’t name anything anymore.

Better battery, better camera, better screen, but not better enough to justify the additional $300 the Pro costs. Not to mention that the colors for the Pro are just awful. Speaking of color, that Midnight Green looks like a sad color for a car in East Berlin before the wall fell. The gold is more of a copper, and the white is more of a cream. Space Grey remains the best option for an iPhone that lacks the color options of the 11.

Of all the Apple devices that are “not for me”, the Pro Max is the not for me’ist. I’m actually looking for ways to use my phone less, not more, and I’d rather have a smaller SE-sized phone than even the larger size that originated with the iPhone 6, let alone the Max.

Apple Arcade

$5 per month? Sold. I’m always looking for new games, and I know my kids will get a kick out of this too, especially once it’s available on the Apple TV. I’m even considering getting an Xbox One controller to turn the Apple TV into an almost real gaming console.

Also, I take back what I said previously. Apple Arcade is a great name for the service.

Apple TV+

$5 per month? Sold. I have high hopes for the shows they’ve advertised so far, and I think that over time the TV+ catalog will grow to a respectable size. My current plan is to drop Netflix, pick up TV+, and upgrade to the Hulu and Disney+ bundle. And maybe, someday dropping cable once more.

Miscellany

As discussed on the most recent ATP, the game demos were not good. I also thought they had too many videos, and I miss Jony’s British voiceovers. I also 100% agree with Marco that the forced applause from Apple Retail employees is really starting to feel fake and cringe-worthy.This video for the Watch was Apple at their best.

An error occurred.

Unable to execute JavaScript.


Enterprise Software Again

I realized today that it’s been ten years since I dedicated an entire post to complaining about enterprise software. In that ten years not much has changed, unfortunately. Enterprise software is still crap, and it’s still more of a hassle than it’s worth. It’s best to avoid whenever possible, so when you find yourself evaluating software or services for your company, here’s a few easy markers to identify the products you should let pass by.

  1. Enterprise software doesn’t want to tell you how much it costs.
  2. Enterprise software often doesn’t even list what it does, instead it want’s to partner with you to provide solutions.
  3. Enterprise software doesn’t provide you technical documentation until after you’ve paid. And even then, it’s lacking.
  4. Instead of real documentation, the marketing department of enterprise software vendors will write “whitepapers”, which are entirely useless.
  5. The user-facing part of enterprise software is almost always complete garbage.

This last point is important because it gets to the crux of what enterprise software is: software wherein the person who pays for it is not the person who uses it. Payment for these solutions is handled by managers who are several steps removed from the daily process of having to put the software in place and use it as intended. What the managers need is a way to justify the exorbitant fees enterprise software vendors charge, so the vender’s sites are full of marketing jargon and various scenarios, hoping to inspire one manager to convince another manager that the price is worth it.

It’s not.

There’s almost always a better way to go about solving whatever problem an organization seeks out a vendor to solve. My personal preference is to solve it in house with open source software and custom development. That way, the money you would have spent on the garbage solution from an enterprise software vendor is spent investing in your own organization. Invest in yourself, solve your own problems, don’t compound your problems by buying someone else’s.


That One Mac Guy

I bought my first Mac in 2004, a white plastic iBook G4. It was slow, the screen resolution was terrible, but wow did I love Mac OS X. After several years of loading every Linux and BSD variant I could find on the PC I bought in ‘99, I finally found a stable Unix-based operating system with a logical and beautiful user interface. The Mac was exactly what I wanted in a computer. I desperately wanted to use it at work, but working in a secure military environment, that wasn’t going to happen.

After I got out of the Navy in ‘06 I got my first civilian job on a six-month contract in Iowa. I was issued another PC, but after poking around a bit I found an old Mac that wasn’t being used, so I adopted it made it work for me. One of the lead engineers saw it once and made the off-hand comment that I should “get that piece of crap off my desk”. I ignored him and carried on. My coworkers were having a LAN party one day after work, and invited me along to play some networked game. I brought my personal MacBook with me, and quickly realized that everyone else had custom built gaming PCs, and that my little laptop couldn’t keep up.

When I found stable employment in Des Moines, I was, again, issued a PC. A Dell laptop this time. Again I found an unused Mac in a closet somewhere, a PowerMac G4, booted it up and used it as my main workstation. After a few years, and knowing my boundaries, I found it possible to work under the radar and bring my personal Mac to work, by now a MacBook Pro, and typically just dropped the Dell in a drawer. From time to time there’d be something I’d need to do with the Dell, and it’d wind up back on my desk for a bit. I remember once a coworker, who would eventually be promoted to my manager, walking by my cubicle and mocking me loudly saying “typical Mac user, Mac in front of him, PC on the side to get real work done.” I didn’t like that guy.

Over the years Macs have become more mainstream and I’ve noticed that they’ve become more accepted at the different places I’ve worked. One thing seems to not change though, whoever is in charge of taking care of employee’s computers always wants Windows PCs. I imagine because they are easier to manage en masse. Even at my latest company meeting, the team was discussing some feature rollout to the PCs, and it came up that I used a Mac1. I quipped that I was pretty sure that by now my using a Mac is a condition of my continued employment. (It’s not.) I further quipped that they could have my Mac… when they pried it from my cold, dead hand.

For my entire working life outside the military, I’ve been the outlier who uses a Mac. By now I’ve been using it exclusively for so many years that I’d be completely lost in Windows. The Mac has a carefully chosen set of tools that mold perfectly to how my mind works. Things are where I expect them to be, they do what I expect them to do. As an information worker, I care deeply about the tools I use. I spend so much of my life using it, I want the experience to at least be somewhat enjoyable. I couldn’t imagine working anywhere that forced me to use a PC, if they did, I’d use it to start sending out my resume immediately.

  1. My whole team uses Macs, but my team is three people, so 🤷🏻‍♂️. ↩︎


Setting Up Webster's Dictionary

Via a post I saw today from Chris Bowler, via a newsletter by Sarah Bray, discussing an article written by James Somers, wherein he describes the writing process of John McPhee1, and how he uses a good dictionary to go from last draft to finished work. The emphasis here is on a good dictionary, namely the 1913 Webster’s Unabridged. I won’t attempt to describe how wonderful the dictionary is here, James did a fantastic job of that on his blog five years ago. I will however say that I think his installation instructions for getting the dictionary usable on your Mac are out of date. Here’s the easy way to do it.

First, download the compiled dictionary text. I downloaded it from a GitHub account, but who knows for how long that’ll be available, so I’m hosting the download here2. Webster.s.1913.dictionary.zip

Next, unzip the downloaded file and find the file named “Webster’s 1913.dictionary”. Click on the Finder’s “Go” menu and hold down the Option key to show the hidden “Library” folder. Click on Library, and find the “Dictionaries” folder. Open it, and drag and drop the new dictionary folder into it.

Now when you open the macOS Dictionary app, you can go into the settings (either by pressing ⌘, or by clicking on “Dictionary” then “Preferences…” in the menu bar), scroll down a bit till you find “Webster’s 1913”, click the check box next to it and drag it to the top of the list. Uncheck the “New Oxford American Dictionary”. Now when you click on a word in a good Mac app, then click just a tad bit harder3, you’ll get the definition from the new and improved Webster’s. It’ll also show up in Spotlight searches, and anywhere else the system-wide dictionary is used.

Now you have a far richer and more useful dictionary. A useful resource if you happen to currently be, or soon will be, a college student who needs to write often, and in volume.

  1. Good grief! ↩︎

  2. Which, ironically, is also hosted on GitHub. ↩︎

  3. If your Mac doesn’t have the force-press feature in the trackpad, you can hit ⌘⌃D while a word is highlighted to get the definition as well. ↩︎


Stories

“We are all stories in the end, just make it a good one eh?”

Christians, shaman, poets, and authors all know one thing… what we believe shapes who we are, and the stories we tell ourselves shape those beliefs. Our lives are a self-fulfilling prophecy. We become who we believe we will become, because we take actions that are logically attuned to the story we’ve told ourselves about our life. Storytellers hold power, not because of wealth or authority, but because the stories they tell shape our understanding of the world around us. In turn, how we understand the world and our place in it guides our decisions and shapes our world to be more like what we believe it to be.


Inessential Thanks

I believe this will be the last I muck about with the design of the site for the foreseeable future. After being disappointed by the available themes, and further disappointed by my own design ability, I went back to basics. And by basics I mean that I found a few sites that I like the look of and copied large chunks of HTML and CSS to build a custom Jekyll theme.

Readers of Brent Simmons’ Inessential site will probably recognize the fonts and general layout. I’ve added navigation at the top, minimized the layout to bare HTML5 tags, and setup some color here and there. I’ve also set up a bit of responsiveness for media, and syntax highlighting for code blocks. My hope is that this will be a good baseline for any future work I put into the site, but attribution must be made first.

I enjoy the simplicity of the design, and how clean and readable it is now. I especially like that there is no Javascript in use. Nothing but pure HTML and CSS. No tracking, no stats, nothing dynamic or fancy. It’s just you, me, and the text.

PS. Brent was kind enough to give his blessing to the new design, for which I’m greatly appreciative.


Example 50031 of Web Developers Overcomplicating Projects

I spent some time over the past couple nights adopting a new theme for the old digs here at jb. I found the beautiful Chalk theme by Nielsen Ramon and adopted my site to use it, including, finally, a working tags system. I’m quite happy with the tags, but I’m less happy with the bundled deployment system the theme shipped with.

The theme depended on NodeJS to build and deploy to GitHub for reasons that I’m sure made complete sense to the developer but I simply don’t care about. The documentation says to run npm run publish to build and push the site, doing so runs a script that does quite a bit of mucking about with the structure of the site.

# Checkout gh-pages branch.if [ `git branch | grep gh-pages` ]then  git branch -D gh-pagesfigit checkout -b gh-pages

First thing we do is create a new branch and check it out. So far so good, I guess.

# Build site.yarn install --modules-folder ./_assets/yarnbundle exec jekyll build

I’m not familier with yarn, but the site says that it provides “fast, reliable, and secure dependency management”. Ok, fair enough, but what dependencies could my little blog possibly have? Apparently, the package.json file it lists what yarn is downloading:

  "dependencies": {    "jquery": "^3.2.1",    "npm": "^6.0.1",    "retinajs": "^2.1.1",    "svgxuse": "^1.2.4",    "webfontloader": "^1.6.28",    "zooming": "^2.0.0"  }

Eh… ok. Why do I need NodeJS for this again? So, Yarn installs a bunch of Javascript and then Jekyll builds the site. Moving on…

# Delete and move files.find . -maxdepth 1 ! -name '_site' ! -name '.git' ! -name '.gitignore' -exec rm -rf {} \;mv _site/* .rm -R _site/

Now things are getting interesting. This deletes everything except the git directory, the .gitignore file, and the site Jekyll just built. Then it moves everything out of the _site directory into the root and deletes that directory as well.

# Push to gh-pages.git add -fAgit commit --allow-empty -m "$(git log -1 --pretty=%B) [ci skip]"git push -f -q origin gh-pages# Move back to previous branch.git checkout -yarn install --modules-folder ./_assets/yarn

Add, commit, and push the changes to Github under the gh-pages branch, then checkout whatever you had previously and reinstall all the javascript. When I tried this my site went offline. I think this script might be out of date. GitHub requires sites that won’t build in Jekyll to be in the master branch, and if you want to use a custom domain name you have to add a CNAME file with the domain name you want to use.

To work around this I setup a separate repository just for the source of the site and moved the built site into the master branch of the main repository. But, when I pulled everything down on my MacBook, the site wouldn’t compile, with Jekyll complaining about not being able to find Jquery. It was at this point I knew that I had gone down a terrible rabbit hole.

Luckily, I was able to get the site built once, so I had all the “compiled” code to work with. All I needed to do was use those files to build my own Jekyll theme with static assets and none of this Javascript build nonesene. Apparently the original theme was trying to do something fancy with the assets by dynamically renaming them and adding assets selectively to the compiled site. I don’t care about any of that.

Jekyll uses the liquid templating system, so it’s trivial to go through the site and add tags to pull in the content you need during build time. Using the theme as shipped caused me to need three different package managers to build a static site. That’s just not right. What’s so wrong with HTML, CSS, and just a little bit of Javascript?

I don’t know Nielsen, and I’m sure he had good reasons to build the theme like he did. I do think it’s beautiful and I’m thankful that he released it as open source so I could use it. For me though, I don’t need all those layers in my life. I just want an easy way to write and publish my site, and have it look and feel like something I care to have my name on.

It used to be you could learn how to build a web site by right-clicking and selecting “view source”. But now, everything easy is hard again.


Merging the Mac and the iPad

It seems undeniable that, given an infinite timescale, Apple will eventually simplify their two most popular systems into a single platform. Merging MacOS and iOS would, theoretically anyway, provide the users with the best of both worlds, and developers would finally have a single platform to target instead of two. This concept seems to run counter to what Apple executives have said in the past about the Mac, specifically that “the Mac keeps going forever”, but the interview that statement comes from is five years old now, which… in silicon valley terms, really is forever ago.

Since then we’ve seen some interesting ideas come to market, like Microsoft’s Surface Studio, a desktop computer with a 27” 4k touchscreen and stylus , and an odd dial that can sit either on the desk or directly on the screen. Samsung is hooking their Galaxy phones up to a keyboard, monitor, and mouse to use the phone as a desktop computer through the DeX dock. Outside of Apple, touchscreens on mobile computers are nearly ubiquitous, from Windows 10 PCs to convertible Chromebooks. Inside of Apple though, we’ve seen almost no crossing of the streams… almost.

The iPad Pro is a computer unlike any other. Incredibly powerful, but hamstrung by limited software and user interaction capabilities. Geek Bench scores are impressive, but you can’t hook up a thumb drive. It looks like a good device for free-form drawing and artistic work, but outside of basic static sties you can’t use it for web development. More than anything, iOS’s reimagining of an operating system for the modern, mobile world eschews decades of proven user experience work that’s gone into the MacOS user interface. MacOS is consistent, discoverable, and reliable. A good Mac app behaves similarly to the other apps that run on the Mac. Copy & paste, undo & redo, and standard keyboard shortcuts function the same across well-designed 3rd party apps and Apple’s own bundled apps. At least they did, until Mojave.

Mojave introduced four new bundled applications to the Mac. Home, News, Stocks, & Voice Memos were ported directly over from iOS using an as-yet-unnamed unified development framework popularly referred to as Marzipan. Apparently the framework is only half-baked, because the apps themselves do not at all act like they belong on the platform. Keyboard shortcuts are missing, UI elements are entirely out of place, it’s a mess. On a recent episode of The Talk Show, Jason Snell and John Gruber discuss the future of these apps, and Snell suggests that what makes a “Mac app” might be changing to meld around what these new iOS apps on the Mac become once the framework is more stable. Niether Jason nor John are slouches when it comes to discussing the Mac, but in this particular case I think Jason is wrong.

What makes a good Mac app is not an indiscernable feel or look to the application. A good Mac app behaves the way that the Mac has taught people to expect applications to behave since 1984. That’s how an application looks and feels like it belongs on the Mac, when things are where they are expected to be, and the application responds as expected when the user interacts with it. If Apple wants to bring iOS apps to the Mac, I certainly hope they have more in store than this. These iOS apps are going to have to learn to behave how the users of the platform expect them to behave, not the other way around.

In many ways, I think Apple found themselves at this crossroads almost on accident. In fact, I think the “macification” of the iPad is to its detriment. iOS was never meant to be used the way the iPad Pro is advertised. Features like multitasking and windowing seem like they were wedged into the OS when Apple found themselves with a less popular platform than they’d hoped. Apple thought that the iPad was the future of computing… what if they’re wrong?

Apple stubbornly wants the iPad to be the future of computing, so they’ve been focusing on making it more capable for power users, adding more and more hardware power and confusing the pure simplicity of iOS with undiscoverable features and unfulfilled promises. What if, in the next couple years, Apple decides to right the ship and build a truly good MacBook/iOS hybrid?

What about an ARM mac with a detachable touchscreen? Or one that folds over on itself? What if Apple learned all the best lessons from Microsoft’s experiments with their Surface lineup and did it right with the Mac? What about an iMac you can draw on? I’d love to be able to create my OmniGraffle drawings on my Mac with a huge canvas and an Apple Pencil. I’d love to be able to use touch on my Mac to interact with the UI when appropriate, and use the trackpad and keyboard when not. Let the Mac grow the way the users actually want it to grow and let the iPad go back to being just the best tablet on the market. Apple could simplify iOS again, and concentrate on making the Mac the best tool for getting things done.


A Dream Jekyll App

I’ve never been 100% happy with this site. On the one hand, Jekyll lets me have full control of my content, and I never have to worry about losing any of it or having anything locked inside a database on a server somewhere. On the other hand, things like adding media is more complicated than I’d like. I’ve written scripts to help, of course, but I’d really rather have the best of both worlds.

I’ve considered creating an application to manage this for me. Like MarsEdit for Jekyll and GitHub Pages. A text editor with a git client and an understanding of Jekyll site structure. It could even let the user sign up for GitHub and setup the repository. I thought I might setup my old Paragraphs app to do this for me… I could tear out the site rendering code and replace it with a wrapper around a libgit2. But, the text editor in Paragraphs needs a lot of work, and there would be multiple parts of the app that would need considerable rework to get it to an even barely functional state. The other option would be to create a new app from scratch, but at this point if you aren’t creating an iOS app in Swift when starting anew what are you even doing with your life? Problem is I don’t know either Swift or iOS development. My skills in this area are basically outdated.

A search for “Jekyll” in the Mac App Store finds one result, for a “markup viewer” app with dubious usefulness. A quick Duck search finds a couple people with the same idea, one that setup a web GUI, which is not at all what I’m talking about, and one that started something five years ago and never finished it. From what I can tell, the app that I want doesn’t exist. Too bad Ulysses and IA Writer added support for Medium into their apps instead of GitHub pages.

So should I build this app or not? It’s basically a text editor that you can drop media on, hit publish, and have it push the site to GitHub. The same thing I have now, but automated, simple, and beautiful. Is there a market for this style of app? Would GitHub allow it? Could I learn the skills required to create it in a reasonable time? iOS development is supposed to be easier than macOS… but I’m not sure that applies when you’re carrying so much baggage around from the old style of development.

In the end, I’m not sure it’d be worth the effort for me. I’ve already got a beautiful text editor, and my scripts and workflows make it simple for me to create and publish new posts. I think I’ve talked myself out of building this app myself, but darned if I wouldn’t love for someone else to build it.


It's the Price

The recent hubbub about Apple’s earnings guidance has “analysts” and pundits talking a lot about China and the global economic situation. I’m sure there’s something to all that, but my take is simpler… the new iPhones are priced too high.

I’m not ready to spend a thousand bucks on a new phone, even though the X-series looks very nice. I’ve talked to several other people who feel the same way I do, one just this morning, even though we are both still running the 6S. Personally, at this price, I’ll keep running my phone till it doesn’t work anymore.

Of course, if Apple came out with a real successor to the iPhone SE, maybe an X-series SE at a similar price point as the previous SE, I’d be very interested in that. But, we’ll see how the next year or so plays out.


An Optimistic 2019

CPG Gray and Myke Hurley have been talking about assigning a theme to a year on their Cortex podcast, in lieu of new year’s resolutions. I quite like this idea, and I’ve decided to adopt it. I’ve decided that my personal theme for 2019 is finishing.

Over the years I’ve started, made significant progress, and then dropped several projects once they got to a state I considered “good enough”. I care about the projects too much to drop them completely, but I’ve lacked the motivation to drive them the final mile to completion.

I’ve waffled a bit on adopting this theme because there is something to be said for leaving things behind that don’t work, but after considering it for a while it actually fits perfectly. It’s time to make a decision. This year, I’ll either finish the project, or leave it behind forever.

So, what kind of projects?

  • This site
  • My old Mac apps
  • The NaNoWriMo Manuscript
  • Basement living spaces (trim, new carpet, etc…)
  • Landscaping
  • Running a marathon

A lot of this falls under the heading of “one of these days…”; adopting finishing as my theme of the year is mentally preparing myself for the fact that the day has come. Posting here is just further motivation not to publicly embarrass myself by not following through. This time next year, we’ll see how much I was actually able to get done, and what got left behind.


Software Subscriptions and Bundled Apps

The Omni Group’s recent announcement that they’d have a subscription option for OmniFocus has me thinking about how I’m going to be handling third-party software in the future. I’m not angry at them, they are still (for now) offering OmniFocus for purchase, but I wonder how much longer they’ll want to keep with the old-style model of licensing when and if subscriptions turn out to be far more lucrative.

On the one hand, software developers need a sustainable business model, and if the market of available Mac users to sell to is not getting any bigger, they need to figure out how to keep getting money out of the people they’ve already sold to. It’s a simple enough equation. On the other hand though, we could wind up with a lot of subscriptions. Off the top of my head I’ve already got:

  • Cable TV
  • Netflix
  • Hulu
  • Amazon Prime
  • My local paper (Yep, I still read the paper)
  • Apple Music
  • 2 TB of iCloud Drive
  • SiriusXM

To be honest, the list is a bit ridiculous, but different people in my household enjoy different things, and so here we are. Hopefully several of these will be cancelled in the next year or two.

I’ve tended to avoid most software subscriptions. When TextExpander switched to a subscription I exported all my snippets and bought Keyboard Maestro. Over the past year I’ve cancelled Bear and Ulysses, opting instead for Apple’s Notes app for the former, and nothing yet for the latter. When I start working on my novel again, it’s likely that I’ll switch to Scrivner, unless they too go to subscriptions, at which point I’ll probably toss a coin between the two.

Bear was already in a bit of a precarious position because the bundled Notes app Apple makes has gotten so good in the past few years. OmniFocus is in a similar position with Reminders. While Reminders and OmniFocus are two very different apps, at the core they both do the same thing, give me lists of tasks to do. OmniFocus is obviously far more powerful, and better at giving me the right thing to work on at the right time, but I could get by with Reminders. Come to think of it, I could get by with pen and paper… I did so for years before I converted to OmniFocus.

Being “Sherlocked” has never been a good thing for developers. They are always in a better position when their application offers something that Apple is unlikely to copy or absorb into their operating system. MindNode for example, Day One and OmniGraffle come to mind as well. If developers are going to be asking consumers for more money, the value of the software they deliver must be significantly higher than what is available for free out of the box with macOS.

I truly want to see the Apple developer community thrive, but I’m not sure how far I’m willing to go with them on this journey to everything being a subscription.