OK, I get it. Software is hard. I’m a developer, I’ve seen it and lived it.

But my god, something is screwed here.

Case in point. I’m really starting to think that Windows Vista, that poster child for screwups, was more reliable and performant than Windows 10. Really? I used Vista for years, both at home and at work. It had its moments, for sure. Windows 10 should beat the pants off of Vista. Microsoft has money to spare, and something like a dozen years more of experience in OS and software development.

The result? Windows explorer needs to be restarted an average of once per day, because things like the task bar don’t load. Windows can’t remember windows arrangement between the laptop and external monitor. Occasional random freezes that require a restart. Whenever I wake up the laptop, it’s pretty much a game of russian roulette to see which apps are still running, or which have randomly stopped running. This is where we are after three decades of development, with an almost unlimited budget for developers and expertise? This is on a pretty powerful machine, and I’m only complaining about Microsoft software.

And I haven’t even started on Skype. Skype was a mainstay app for me for a long, long time – mainly for it’s chat functionality. This isn’t cutting edge tech – chat! Then Microsoft bought it. Recently I started having bizarre problems with Skype. Sometimes it wouldn’t start up. Sometimes it’d just show a white screen. Sometimes it wouldn’t show what the person had sent (despite a good internet connection). Really? Is this rocket science? Turns out I had to uninstall the version of Skype that apparently came with Windows 10, and install a different version – not what is in the Windows app center (or whatever it’s called). So, apparently there’s two different versions of Skype floating around for Windows 10, and the one on the Windows app center is not the more stable one. Brilliant!

And in case my esteemed reader thinks I’m just beating on Microsoft, I’m not. I’m actually a bit of a (disappointed) fan. WSL is great, and the way forward in my book. Let’s look at another enormous, hugely profitable company – Adobe. They were already in my bad books because new versions of photoshop (the only app I really used of theirs) mysteriously wouldn’t work with older versions of MacOS (yes, Apple is in that book also). But now I’m using Windows and trying to use their Acrobat “software.”

What a shitshow! PDFS have been around for a long, long, long time. Just displaying a PDF should be only slightly more complicated than a text file at this point. Adobe Acrobat is a laggy, bloaty app that takes a marvelously simple basic use-case scenario (view a PDF) and botches it completely. Sadly, I recall using some third-party app for PDFs in the Windows Vista days… and here I am again. How many decades later?

A company the size of Adobe or Microsoft certainly has the resources to fix these problems. In fact it seems almost a given that for every piece of software produced by one of these giant companies there’s a much leaner and meaner competitor written by a very small company or even a single programmer. Of course the trick is finding that software. It doesn’t help that those little companies tend to get bought (and killed) by the big companies…

Why is the software from these big companies so bad, despite all the resources at their disposal? I think there’s several factors at work:

  • They just don’t care. Adobe focus is on huge, bloated, expensive enterprise level software. Acrobat may be huge and bloated – but it’s not a profit center for them (I assume).
  • Features over fixes/performance. At some level the organization chooses to prioritize adding new features over fixing existing issues or improving performance. This could be because management pushes new features, or because developers would rather write a new feature than fix old code. Or because middle managers never get promotions for fixing bugs, only for adding features. Or maybe we can just blame it on sales. The real issue is one of prioritization.
  • Simple incompetence. This is always a possibility! I suspect that there are plenty of talented, professional developers at these companies – but perhaps those are not the ones being put on these projects. Again, an issue of priorities.

I’ve been using computers for nearly 40 years at one level or another. The capabilities of our computers have increased exponentially in this time. Too often the software we use has not kept up to the potential of the hardware. The end result is we must keep buying new hardware, to keep up with the demands of the same mediocre software. I don’t think this is going to change any time soon.

Google Backup Trials and Tribulations

Like many others, I’ve switched from using a dedicated camera to using my smartphone over the past five years or so. This is especially handy when traveling, since you can get by pretty well without needing to pack a camera and associated gear. The picture quality on phone cameras has come a long way!

I’ve always been an Android user, and for the past few years I’ve been taking advantage of having all the pictures/videos on my phone automatically backed up to google drive. This has been a lifesaver when a phone suddenly dies (thanks not-so-waterproof-bag in Thailand!) – the worst case is you lost whatever pictures/videos were on the phone since last backup. This usually means, the last time you were on wifi.

But, something that has been bugging me is that a huge percentage of my pictures are “in the cloud,” with the attendant risks. No, I don’t suppose google is likely to lose my pictures – but I’m pretty risk-averse with these kinds of things and I don’t like being held hostage by a provider. What works well now could suddenly be a problem if Google suddenly decided to change their policies…

So, I’ve been meaning to back up all these images to a backup system I control, that is not in the cloud. Google has something called google takeout that allows you to export data from many of their services. You choose the data you want, and start an export. After a while Google tells you it’s ready and you download it.

The problem is the amount of data. My export is something like 180GB. That’s not such a problem to store these days – the issue is the download. Google only keeps the export files around for short period of time. Our internet connection is not super fast. And it doesn’t help that the download links lose their session quite quickly – meaning you have to keep logging in… And then Windows has a tendency to kill the downloads when the laptop goes to sleep – sometimes.

As a result I’m on my second run of trying to grab this data in eighteen 10GB zip files. This is a pain, and it’s not going to be particular easy to repeat and get only the changed data.

In addition, the files you get include a directory for reach date a picture/video was taken. Sometimes more than one. Inside that directory there’s a mess of files, including a json metadata file. Organizing this is not fun.

There may be some way to use an API to make this a better process, but the last thing I feel like doing is mucking around with yet another API and writing code…

Well, if I come across better options, I’ll write it up here!

The More Things Change…

It’s been well over a year since I switched back to Windows from mac. Still not regretting, but it’s a little disappointing to see all those old rough edges still there in Windows.

For example, when I close the screen on my laptop… who knows what will happen? Usually it will sleep. Sometimes it’ll shut down. Sometimes it’ll go into some sort of weird half-shut down where it doesn’t really boot up, but all my apps have crashed….

Dealing with printers is just as fun as ever. We have a nice new Epson, and when I tried to print… nothing. Restarting the print spooler service fixed it, so not a big deal – but there’s no way my parents would’ve thought to do that.

Skype is especially weird. Sometimes it’ll just not automatically scroll to show new messages. Whether I get notifications seems to be basically random. Yesterday for some reason every time I used ctrl+v to paste – it’d paste the contents of the clipboard twice… wtf? Restarting fixed it. Skype worked perfectly well back before MS took it over – why mess with it? Tpyical.

All in al I’m still pretty happy with it, especially considering the price/performance vs a new macbook. But c’mon Microsoft, you can do better.

I know this stuff is not easy… but I think there’s often pressure to develop new “features” that are just unnecessary – but that’s a post for another day.

Tech and Terminology and Political Correctness

I usually don’t post anything too political on my blog – that old saying about politics and religion is a very wise one – but I thought I’d weigh in on a debate going on in the tech world regarding some of the terms we use, and whether they should continue to be used.

In the aftermath of George Floyd’s death and associated protests and turmoil, a lot of attention has been put on many terms and symbols that are perceived as carrying racist overtones or baggage.

To be absolutely clear, I complete support black lives matter and think the vast majority of these protests are completely acceptable and necessary. This country has a lot of things to issues and racial problems are part and parcel of our history and the texture of this country. Segregation only ended in my parent’s lifetime – and we finally got gay marriage only very, very recently. And I’ve always wondered why we would have statues and military bases named after literal rebels and traitors.

In the tech world there’s a lot of discussion about changing some terms that we use – such as blacklist/whitelist and master/slave. For blacklist/whitelist I think changing it to something allow/block list or something along those lines makes a lot of sense. Think about it, I don’t think the term itself is overtly racist – however the negative/positive associated with black/white is problematic. More importantly, these are not clear terms! Allow/Block is far clearer, in my opinion.

Master/Slave is another pretty problematic term. It is descriptive of the relationship, however in most of the world the idea of a “master” will construe as white and “slave” as non-white. That’s just the reality of the world. Yes, I know there have been all kinds of slavery throughout history, some with racial overtones and much without. I was a history major! But that’s irrelevant – what matters is what makes sense to the majority of people alive now. I’d suggest something more like Source/Duplicate, or Original/Duplicate, etc. I think that still describes the relationship well, at least for a database setup…

But with Master Branch (i.e. in git) I’m not sure there’s the same racial overtones. For one thing, we don’t call other branches “slave” branches, and if we did it wouldn’t really capture the relationship well at all. A branch off master is not “controlled” or “dominated” by the master in any way, typically. Honestly, something like “trunk/branch” might make more sense, but a lot of this depends on how you use git. I just don’t see this as a problem as bad as say the “master/slave” terms!

Likewise, Master Repository has the same issues as above. What’s really being described is more like “original” versus “branch” or “derivative” etc. It doesn’t seem like that much of a problem – but it shouldn’t be hard to find a less controversial term that also accurately describes the relationship.

I guess I’m generally in favor or trying to change usage of these terms – as long as another term can be found that describes the relationship at least as well. But I also think that like most things they’re on a spectrum from more “racist” (black/white list) to less.

But, another aspect of this whole controversy should be kept in mind – arguably the organizations who are making these changes to their terminology could be helping things a lot more by becoming diverse and inclusive workplaces. I’m not saying that they’re not! But I am saying that we shouldn’t let this little debate over terms distract from more meaningful changes.

Virtual Events: How to Get the Most From Them

I’ve attended a few different virtual events now since all this pandemic craziness began, and have built up a list of tips and tricks to help people maximize the benefits they can receive from participating in online events like these.

The last event I attended was the Magento Association’s Connect event on Thursay May 28, 2020. I really enjoyed the event, it’s definitely the best event I’ve attended so far. Previously, I’ve attended the online Adobe Connect and Microsoft Build events. Those two honestly felt like little more than a youtube channel playing pre-recorded videos. This is not mean to criticize the organizers of any event, this is new territory for lots of us! There’s definitely a trade-off between interactivity and having more polished video content.

Ok, here we go with my tips:

Test Your Audio/Video
This is important for in-person events, and even more important now. Each different platform can bring all sorts of weird wrinkles and issues. Test your audio/video as much as you can ahead of time! Just because it seems to work in Zoom does not mean it’ll necessarily work in whatever online platform that is being used. Even if you’re not presenting, it’s wise to make sure it all works. You may want to try using a DLSR camera rather than your built-in camera if you can set that up, the quality will probably be a lot better.

Test Screensharing
If possible, test out how screen-sharing works – make sure you know how to start sharing, if you have to choose a window only to share, or a part of the screen, etc. Are you still visible via your camera while sharing your screen? If you’re presenting, be sure to ask for a test session ahead of time to catch any issues.

Know Your Microphone
This is kind of related to the importance of testing audio and video ahead of time, but have an idea how your mic works. Does it pick up a lot of “other” audio? If you have a boom type mic sitting right in front of your mouth, maybe not – but then it’s going to pick up all sorts of other noises from you. If you you have a lot of background noise, maybe a different mic (or muting) is a good idea…

Font Size and Slides
Sometimes the video quality of shared screens and slides can be iffy at best – so if you are presenting your best bet is to make your slide text big and clear. This is a challenge for developer-oriented talks where a lot of code needs to be on the screen!

Maximize Your Profile
If possible, login and set up your profile as much as possible before the event. You want to make it as easy as possible to let people track you down online later – and you want to stand out in long lists of people attending, so add a profile photo if possible!

Close Those Apps
This is also important for presenting in-person, but even more for remote. Close (or mute) any apps on your computer that may interfere – especially if you’re presenting! No need to have that embarrassing slack message pop up during your presentation. Likewise, do you need all the slack “ping” sounds playing during your presentation? Or even worse, interrupting others’ presentations? And turn off your phone notifications – even just vibrate will cause noises to come through your mic in many cases.

Learn the Platform
Each of the platforms I’ve experienced has its quirks, like any other system. Learn where all the relevant controls are. Can you mute other people? How do you know if you’re muted? Is there a chat? How do you control that? Can you send private messages to other attendees? How do you see how many people are in a “room”… you get the picture.

Be Aware of Your Background
If you’re going to be on camera, check out ahead of time to make sure there’s nothing too embarrassing or distracting in your background. Check your lighting, will you look like someone out of a witness protection program because of poor lighting?

Flashback Friday: MMDE 2018

For today’s flashback, we’re going back a couple years to the first time I got to attend Meet Magento Germany in Leipzig, 2018 – right around this time of year. This is one of the old Meet Magento events, and was a great event. I’d never been to Leipzig before, so taking the extra day or so we had to explore was definitely a benefit. It’s a little bit off the beaten path of the regular tourist tourist destinations in Germany – but definitely worth the trip.

The conference took place at Kongresshalle am Zoo Leipzig which is a great old historic building near the zoo and not far from the city center. The afterparty at Moritzbastei took place in a really cool old bit of fortification (cool… literally) with arched ceilings and courtyards. One of the best parts is there could be music and dancing in one section, and just down the curving hall a quiet place for drinks and conversation. Plus lots of great food and drinks!

We went again in 2019 – but sadly there will not be a 2020 edition, thanks to the Pandemic. The 2019 trip memorably involved a long, late night taxi trip to go to … KFC.

Happy Memorial Day?

It’s the time of year where we’re supposed to remember all the sacrifices made by our armed forces. But we’re also in the midst of a great debate about relaxing efforts to contain the pandemic.

I certainly do not want to downplay the losses and suffering of our veterans – but I’m also infuriated by efforts to downplay this pandemic.

So let’s look at some stats. Here is where I’m getting my numbers for the pandemic – 98,034 as of this writing. And I’ll be referring to the military death totals listed here.

So, all provisos about the pandemic numbers aside (I think they’re probably under-reported) – more Americans have died from COVID-19 than Vietnam (58,029). Think about that. Vietnam took place over a decade or so (depending on how you wan to track it). Think about the chaos and disruption that caused, and who knows what costs to our country for the veterans and their families. We’re about three months into the pandemic at this point… And I’ll bet you an N95 mask that a good number of our Vietnam vets have been taken by the coronavirus.

And, we’re approaching the number killed in the first World War. God forbid we surpass WWII or (horrors) the Civil War.

Here’s another interesting thing to think about. According to this site, almost 7,000 Americans have died in the war on terror, plus about 3000 who died in 9/11 – for a total of 10,000. That’s about 1/10th of the number who have died from COVID-19. Now, consider how much has been spent on our war on terror. Something on the order of 5 trillion dollars (source). I am not saying that we should have not spent that money, or fought those wars. That’s irrelevant to this. My point is, we really need to think about our priorities. I didn’t bother trying to track down what the US spends on research/prevention for pandemics, I’m sure it’ll be depressing.

So, the next time you hear someone try to downplay this pandemic – ask yourself, when’s the last time you lived through a couple Vietnam war’s worth of dead Americans? In three months.

Please stay at home! I don’t care what your state decides to do. Stay home. I think it’s only going to get worse.

May you live in interesting times.

Flashback Friday: Meet Magento Asia 2018

Back in November 2018 I had the luck to attend Meet Magento Asia, in Bangkok Thailand. It was my first time to Thailand and it was a blast! Really love Thailand, and this was a great first exposure to it. We attended again at the end of 2019.

Benefits of Remote Work

As I’ve written about previously, I have a little more experience working remotely than many others who have been thrown into remote work due to the pandemic. For me, working remote is the norm so having to work from home hasn’t been a big jarring challenge, but it’s totally understandable that this “new normal” is causing problems for workers and employers alike.

I do think, however, that this is a huge opportunity for organizations – this is their chance to realize the benefits of remote work – and to discover that the changes that have to be made for an organization to handle remote work efficiently are extremely beneficial even if things go back to “normal” at some point.


The first key benefit that organizations will realize with a remote-capable workforce and ability – it gives far great flexibility. If your employees can work remotely as efficiently as when in office, it opens up options. Running out of office space, or need to close the office for renovations, etc – it’s no big deal because your employees can all work capably from home. This is not flexibility that you’d have otherwise.


Closely tied to flexibility – resilience means a remote-capable organization can roll with the punches way better than a traditional office-bound organization. We’re all seeing this right now because of the pandemic – but it could happen in much more mundane scenarios – fires, floods, power outages, etc. I once had to leave an office in a high-rise because of a fire alarm. By the time everyone filed down 18 floors and waited until 20+ floors of the building was clear – the day was lost. This would not happen with a remote-capable organization – either some of those employees would’ve been at home and unaffected, or we could’ve all just headed home (or to a coffee shop) and finished our work day productively.

Another way to look at this is that being remote-capable allows an organization to keep employees who may otherwise leave because they need to move to a new geographic location. This is an extremely common reason why employees leave – and everyone knows how expensive it is to train up a new employee. Keep them, let them work remote!

Expanding the Talent Pool

This should be a fairly obvious benefit – it’s simple supply and demand. By ignoring physical location, you are vastly expanding the pool of potential talent available to you. Even better, because of cost of living differences, your offer may be way more attractive to a potential remote employee than a local employee. The higher your area’s cost of living is in comparison, the more important this is. Silicon valley companies that don’t regularize remote work are at a huge disadvantage!

Enhancing Organization

This is probably worth a post all of itself, but the very act of making your organization ready for remote work will drastically enhance your organization, especially when it comes to project management. Remote workers need to be able to see everything necessary to work on a project – status, what is done already, requirements, deadlines, etc. The very act of pulling all this information together into one place, accessible to everyone, is also a huge boon to non-remote workers. It’s a win-win!

Cost Savings

Finally, what is probably the most obvious advantage of having remote workers – cost savings. By not having to pay for as much (or any) office space, a huge expense is removed from the balance sheet. Add in all the associated costs – insurance, power, internet access, cleaning, catering, etc – it makes a difference. Some of this should certainly be passed on to the employees in terms of salary increases or something else, but the fact remains that a remote organization is much leaner than a traditional brick and mortar office-based shop.

But… How Will I Know They’re Working?

I think the real reason behind much of the reluctance of organizations to embrace a remote office is the perceived lack of control. After all, how do you know your employees aren’t just playing video games and drinking their days away if you let them work from home and (gasp) set their own hours?

The real problem here is not a remote office issue – this is a management issue. Employees obviously need to be responsible and do their work. But this is not a factory floor – you can’t just measure how much time they spend staring at their screens and take that as measure of how “good” an employee is.

The issue is figure out the real KPIs (key performance indicators) that are appropriate for each role in an organization. This is not easy and never has been! But getting this right gives an organization an enormous advantage, both in terms of employee productivity, happiness and efficiency.

What you should not do is set up some sort of ridiculous surveillance system to make sure your employee is sitting in their seat and doing whatever you think they should bed doing. Employees should be rewarded for doing their jobs well, and you should be doing everything in your power to empower them to figure out how to do their jobs productively and efficiently.

If an employee slacks off and doesn’t get important work done, their KPIs should reflect that, and there should be consequences. And if they can get their job done right, their KPIs should also reflect that. Whether they’re sitting in their seat 8-5 is completely irrelevant and counterproductive. The point is to have empowered employees you can trust.

New Windows Terminal

Just updated windows so I could install the new windows terminal – and I’m quite impressed. It’s noticeably faster than what I was using before, and seems like it’s quite configurable. I spend so much time on the command line that I sometimes forget I’m even using windows.

You can install it via the windows store. I had to update windows to meet the requirements.

Next up, install WSL2 which I’ve heard many good things about. I might wait a bit on that one, because it seems much more likely to throw a wrench into my current dev setup and make me burn a lot of time to fix… but the benefits sound great.