Press "Enter" to skip to content

Posts tagged as “Making Computers Useful”

[twenty twenty-four day seventy-one]: cheers

centaur 0

Unabashedly, I'm going to beef up the blog buffer by posting something easy, like a picture of this delicious Old Fashioned from Longhorn. They're a nice sipping drink, excellent for kicking back with a good book, which as I recall that night was very likely the book "Rust for Rustaceans."

Now, I talked smack about Rust the other day, but they have some great game libraries worth trying out, and I am not too proud to be proved wrong, nor am I too proud to use a tool with warts (which I will happily complain about) if it can also get my job done (which I will happily crow about).

-the Centaur

Pictured: I said it, yes. And now we're one more day ahead, so I can get on with Neurodiversiverse edits.

[twenty twenty-four day fifty-six]: code rots

centaur 0

Only six months have passed since I last worked on the Embodied AI Workshop website, and now the code will not compile in a horrible mess of broken dependencies. I have tried two or three ways of installing it, including in place, from scratch, and even on a Parallels instance of Ubuntu in case macos was the problem. Nothing works. As a last-gasp effort, I plan on creating an AWS instance, in case Apple Silicon itself is the problem (I suspect it is, as one of the libraries has no Apple Silicon binary packages, and the instructions to recompile from source are roughly five years out of date).

But software is a mess. Occasionally you get something that's awesome (like Python - or Rust! Installation of the Bevy game engine was smooth as a dream) but more often things explode in a mess of unresolvable dependencies, and you're stuck between Apple locking everything down, Windows becoming spyware, and Linux not running anything you want at all.

I'd weep for the future, but I'm too busy hiding from it.

-the Centaur

Pictured: My software consultant, deciding discretion is the better part of valor. Actually, up top Loki has seen the installer for the rock border in the French Quarter, and below he is hiding from him.

I’m scared of Homebrew’s installation procedure, but I still love Homebrew

centaur 0

This is a followup to my Making Computers Useful series, started all the way back in 2014. (Funnily enough, the 2013-era iMac featured in that series is now pretty damn useless as it has fallen out of update range, and locks up if you run Dropbox and Google Drive at the same time).

But, the overall goal here is to document some of the stuff that I need to do to make computers work for me. Typically, there’s a lot of friction in software, and it takes a good bit of work to make that all function on a new machine. Sometimes that becomes a deep dive.

This is one of those stories.

So today, while updating the Embodied AI Workshop’s website prior to the launch of the 2023 version, I wanted to run the tree command. Tree is great because it can help you understand the structure of a directory tree, like so:

I felt I needed this because the Embodied AI website is built on yarn and gatsby, and it turned a relatively simple site into 1.6 gigabytes of generated junk (which I noticed when one of my older computers started literally wheezing as it tried to mirror all those unexpected files):

As it turns out, you can get tree via Homebrew. Homebrew is a “package manager,” kind of like an “app store for the command line,” and Homebrew helps you get standard Linux tools, like tree, onto your Mac so you can take advantage of all the hidden Unix goodness in your Macintosh. 

However … I’m a bit leery of Homebrew because this is how it installs itself: 

I mean, WHAT? curl a file and run it with bash? Seriously. Now, look, I’m not saying Homebrew isn’t safe - every indication is that it is - but that this METHOD of installation is a recipe for disaster. 

Why? Well, in case you’re not in the know, what this installation instruction is suggesting is to DOWNLOAD RANDOM CODE FROM SOMEWHERE ON THE INTERNET and RUN IT ON YOUR COMPUTER WITHOUT CHECKING IT AT ALL!

Nothing can go wrong with this plan.

Now, I’m no expert, but I’m familiar enough with this stuff to know what I’m doing. SO, first I checked with a few quick searches to see [is homebrew for mac safe] and it appeared to be.

SO I downloaded the software with JUST the CURL part, like so:

curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh > homebrew-install.sh

... so I could examine it more closely.

Folks, seriously, never do this on a site you do not trust.

After I had the code, I then inspected this homebrew-install.sh file to find out whether it was safe. I didn't see any obvious malware, but when I ran it, it wanted me to TYPE MY PASSWORD.

Seriously?

Please, I’m asking you, do not hot-pipe random software straight off the internet and run it straight from the command line and give it your password when it asks. If someone intercepts the website, and gets your password, they can do anything.

(SERIOUSLY. Once I was working with a legitimate Google representative about a Google ads program and when I went to log in to Google ads to check something, a hacker injected a fake Google ads site between me and Google, and damn near got my password. Only two-factor authentication saved me, as it broke some key link in the chain.)

BUT … it is the PATTERN I’m talking about here, not the specifics. Everything I’ve seen about Homebrew says that it is safe. I’ve even used it before, on other machines. SO, after some more research, and a little more code analysis, I confirmed this password-asking was safe, and gingerly went ahead.

And it went fine. 

I had to pay thirty million bitcoin to a Russian spammer, but I wasn’t using it anyway, and I’m sure at least they got to buy a cup of coffee or something with it. :-D

Seriously. It went fine. And I love Homebrew. I just go through this every time I need to “bash” run a piece of “curl”-ed software straight off the Internet and then it asks for my password.

Still, tree worked like a charm. (Screenshots of its use were above). There are more pieces of Homebrew software I need to install, but as one test, I tried to install “banner”, a program to create oversized pieces of text, which I use in scripts to alert me that a big task is done.

But, it seems like Mac already has a version of banner, which works differently on Mac than Linux, printing VERY large ASCII banners that are vertical rather than horizontal. That’s useful, but not for my case, so I dug around for an equivalent tool.  brew install figlet is the way to go:

All great! 

It didn’t help me with my work on the Embodied AI website, as I had already moved on to fixing other problems on that website, and was only “brewing” things in the background while I did other tasks (like remote-attend the church vestry retreat).

But removing this friction will help me in the future. The next time I need to examine the tree structure of a directory, it's one command away. I can put banners in my scripts. And I can easily add new software with 'brew' the next time it comes up.

AND, as a bonus, I discovered a site which is doing something very much like what I want to do with the Making Computers Useful series, Sourabh Bajaj’s Mac OS Setup Guide, which “... covers the basics of setting up a development environment on a new Mac.” I have an internal document called “Mac OS X New System Tasks” which documents for myself the travails I go through every time I get a new Mac, and Sourabh’s guide seems like it provides a public version of what I want to do. Which is great! Less work for me. ;-D

On to the next task!

-the Centaur

P.S. As another added bonus, I composed this in Google Docs, and pasted it straight into Gutenberg, the new Wordpress block editor. It worked like a charm ... EVEN DOWN TO PASTING IN THE IMAGES! If this is a feature of Gutenberg, I will have to consider saying my favorite three words about it ... "I was wrong."

P.P.S. Don't hold your breath on that, though, I'm waiting for the other shoe to drop.

Never Give Up

centaur 0

So, 2019. What a mess. More on that later; as for me, I've had neither the time nor even the capability to blog for a while. But one thing I've noticed is, at least for me, the point at which I want to give up is usually just prior to the point where I could have my big breakthrough.

For example: Scrivener.

I had just about given up on Scrivener, an otherwise great program for writers that helps with organizing notes, writing screenplays, and even for comic book scripts. But I'd become used to Google Docs and its keyboard shortcuts for hierarchical bulleted lists, not entirely different from my prior life using hierarchical notebook programs like GoldenSection Notes. But Scrivener's keyboard shortcuts were all different, and the menus didn't seem to support what I needed, so I had started trying alternatives. Then I gave on more shot at going through the manual, which had earlier got me nothing.At first this looked like a lost cause: Scrivener depended on Mac OS X's text widgets, which themselves implement a nonstandard text interface (fanboys, shut up, sit down: you're overruled. case in point: Home and End. I rest my case), and worse, depend on the OS even for the keyboard shortcuts, which require the exact menu item. But the menu item for list bullets actually was literally a bullet, which normally isn't a text character in most programs; you can't access it. But as it turns out, in Scrivener, you can. I was able to insert a bullet, find the bullet character, and even create a keyboard shortcut for it. And it did what it was supposed to!

Soon I found the other items I needed to fill out the interface that I'd come to know and love in Google Docs for increasing/decreasing the list bullet indention on the fly while organizing a list:

Eventually I was able to recreate the whole interface and was so happy I wrote a list describing it in the middle of the deep learning Scrivener notebook that I had been working on when I hit the snag that made me go down this rabbit hole (namely, wanting to create a bullet list):

Writing this paragraph itself required figuring out how to insert symbols for control characters in Mac OS X, but whatever: a solution was possible, even ready to be found, just when I was ready to give up.

I found the same thing with so many things recently: stuck photo uploads on Google Photos, configuration problems on various publishing programs, even solving an issue with the math for a paper submission at work.

I suspect this is everywhere. It's a known thing in mathematics that when you feel close to a solution you may be far from it; I often find myself that the solution is to be found just after the point you want to give up.

I've written about a related phenomenon called this "working a little bit harder than you want to" but this is slightly different: it's the idea that your judgment that you've exhausted your options is just that, a judgment.

It may be true.

Try looking just a bit harder for that answer.

-the Centaur

Pictured: a photo of the Greenville airport over Christmas, which finally uploaded today when I went back through the archives of Google Photos on my phone and manually stopped a stuck upload from December 19th.

Making a Mac Useful, Part 2: Why an New iMac?

centaur 0
20140601_232033_HDR.jpg

Ok, why an iMac? Why Mac OS X at all? “Because they’re easy to use?” After looking at my list of “prep my Mac” todos, I say to that … ha!

However, despite that, I find Macs are just about the easiest to use of the mainstream operating systems (the others being Windows and Linux), but I’ve been computing for a long time and have acquired many quirks - or, more charitably, special needs. Some of those needs are just my druthers on how I want the computer to run, and other needs are vital parts of my workflow for which, if the computer doesn’t do its job, I literally have to go find another machine to get the job done. And I don’t like doing that - so I’ll spend a week or two beating a machine into shape if it means I can flip the thing open for two or three years and just have it do exactly what I want.

Well, then, why not beat a Windows machine into shape? For the record, I find Windows slightly more usable than Macs - no joke, and I’ve been using both for decades - but Macs are more reliable, more internally consistent, and most importantly, better integrated with UNIX. I’m a web and research software developer, and the standard OS in my part of the world is the UNIX variant called Linux - but Linux isn’t very reliable when running other software I need, like Microsoft Word, Photoshop or Starcraft. Alternatives like Cygwin make Windows more UNIX-friendly, but barely; whereas Mac OS X is built on top of UNIX.

That leads me, inexorably, to the Mac. As I said before, other alternative operating systems, like ChromeOS or Android or iOS, don’t run the software I need for work work, writing work, or pleasure - and cloud alternatives like Google Docs simply don’t count as they lack required features or - wait, why I am I even defending this? Microsoft Word runs on Mac and Windows. Photoshop runs on Mac and Windows. Alternatives to these programs are largely a joke, and that’s coming from someone who uses them - a lot. (I’m using Google Docs to write this note, in fact, and I’m also familiar with and use OpenOffice). If you can’t run Word or Photoshop well, reliably, you can’t play. And that leads me to Mac and Windows. And UNIX, inexorably, pushed me to the Mac.

For my personal use, I need a computer I can easily carry around with me that has at least a half-terabyte hard drive (to hold ALL my relevant files), a good processor, lots of RAM, and a decent-sized keyboard and screen, all in a lightweight package that won’t throw out my back when I put it in a bag. That led me to a maxed-out 13 inch MacBook Air, and it’s served me well.

But for my central home server, the computer to which the primary house printer is attached, I need something more. I need a much larger hard drive - a terabyte or more - so the computer can simultaneously serve as the Dropbox / Google Drive remote backup of my laptop computer, and also have more than enough space left over to hold archives and mirrors of my older computers and copies of my wife’s computer files. Something zippy, good for both game playing and programming and especially Photoshop / Illustrator, so the computer could serve as an editing bay for my comic book art.

I briefly considered the new Mac Pros, which are gorgeous machines. But when I buy a desktop PC, I do my very best to “max it out” so that the machine will last as long as possible. A maxed out Mac Pro with screen came in at something like ten thousand dollars - enough to buy a new maxed out iMac, a new Windows 8 touchscreen PC for my wife, a new backup solution, a storage shed out back, and some very nice dinners at Alexander’s restaurant.

Now, there are drawbacks. iMacs aren’t really expandable. They’re also a bit behind the times, UX-wise: iMacs don't have touchscreens. That’s a shame, but, on the other hand, it isn’t particular to iMacs: Apple overall isn’t really ready to support touch screens yet. There’s a claim that they’re not useful yet, but I have a Windows 8 laptop as well, and I’ve used a Chrome Pixel and an ASUS Transformer Prime, and I can tell you that you get used to the idea that you can manipulate objects on screen really damn fast. However, that means if you want a touchscreen, you’re going to have to get a Windows 8 machine or an Android machine (yes, you can get full-sized - I mean, 19 inch - Android all-in-one PCs [ http://shop.lenovo.com/us/en/desktops/essential/n-series/n308/ ], but I cannot yet find a full-sized Chrome OS touchscreen PC). Honestly, I’d rather have the applications that I want at this point, so Mac OS X is my only choice for now.

So an iMac it is: Microsoft applications, a UNIX base, and a price that fits.

Next up: the physical setup.

-the Centaur

Pictured: an Apple iMac 27 inch, a Microsoft Natural Ergonomic 4000 keyboard, and a towel serving as an ersatz cat bed, sans cat.

Making a Mac Useful, Part 1: Why Are You Hitting Yourself?

centaur 0
20140524_014622_HDR.jpg

OK. This is going to be a deep dive, and it may take some time: I’m going to review the unbelievable list of tasks necessary to make a Mac OS X system usable for my daily work.

Now, this isn’t particular to Macs, nor even particular to desktop systems. Usually, when I get a new desktop or laptop or tablet or phone, I’m up and running in a few hours - sometimes, a few minutes - but for the next several weeks, I find myself cursing as I realize yet another program or setting hasn’t propagated over to the new machine.

That wouldn’t be much of a problem … except I do most of these tasks when I first get a machine, and I don’t update my machines often. I update phones roughly once a year, and laptops twice every few years - twice, since my work MacBook Pro and my home MacBook Air get refreshed on around the same schedule. While it’s easy to remember to toss a half dozen apps onto a phone and tweak a few settings when you get it, the more complex configuration tasks for a desktop operating system, sometimes involving multiple steps and research, are something that slowly evaporate from my memory over two or three years.

This is the kind of problem that the Chrome OS by Google is designed to solve: a system which ties all your configurations to your account, so if you toss your laptop into a wood chipper, you can get a new one and pick up literally where you left off. Unfortunately, a browser only operating system really doesn’t work for me. I am primarily a producer, not a consumer, and my daily work environment is filled with programs like Word and Excel and Photoshop and Illustrator and Acrobat and Ecto and Python and Bash and J and Aquamacs and Vi and Eclipse and MAMP and Gimp and so on and so forth.

So I’m more than willing to put up with this once or twice every two or three years. Hopefully, by blogging about it, I’ll get a better grip on the process, and so next time, it will be easier.

SO I got me a new Macbook Air with a half-terabyte hard drive, and planned to make this tiny aluminum wedge into my primary computer, replacing both my old MacBook Pro “server” and my MacBook Air mobile writing computer. I began configuring it, writing the list of tasks down, expecting it to take a page or so.

Ha!

That list rapidly spiraled out of control, so I never started that blogpost, even though I got the new MacBook Air configured so well it did indeed become my primary machine. I carry it everywhere, use it for everything - well, almost everything. It was missing only one critical feature: a connected printer - natch, it is a lightweight laptop.

I do have a Canon MX870 multifunction printer-scanner-copier hooked up to my old MacBook Pro, but that MacBook Pro was getting so long in the tooth that I was afraid to turn it on, and when I did so Chrome complained that it couldn’t update because my OS was unsupported and Apple complained that the OS was out of date and my neighbors complained because every time I moved the mouse their TV flickered. So, I decided to bite the bullet and replace it, ultimately with a shiny new iMac.

Which brought me back to this list.

Now that I’m doing this process twice, in close succession, I have the opportunity to find out what’s really necessary, and can see where I’ve missed steps. I’ve broken this list into two parts - one very, very long document in which I am documenting, for my own wordy gratification, ALL the tasks that I have to do to make this new Mac useful to me, and then this series of bite-sized articles, which breaks that apart into small logical chunks. By the time I’m done, I’m guessing there will probably be a dozen articles in this series on Macs alone - not counting setting up Windows boxes, or phones, or the work I’ve had to do on my development environments.

To some, this might seem not just a deep dive, but off the deep end. But there’s a dual method to this madness.

First, having this information on the Internet makes it searchable. Many a time I’ve followed a set of directions related to some computing task and found them nearly useless, and only by piecing together clues from half a dozen different pages online have I been able to, somehow, adapt a solution to the problem. (I have no idea where I might have picked up that problem-solving strategy).

20140531_233237_HDR.jpg

But often the information is not available at all. Even doing this blogpost on the new computer required doing several tasks which were simply not documented anywhere. That’s a blogpost for another time, but hopefully, putting this information up there will help change that.

The second reason for documenting this so thoroughly is to put, on record, how difficult it is to use even the easiest of the modern desktop computer operating systems (again, excluding Chrome OS, which does not (yet) compete in feature parity with standard desktop operating systems). I’m a computer scientist with a PhD in Artificial Intelligence who currently works with four different operating systems, and I’ve got thirty-five years experience working with dozens of different kinds of computers - and if I have trouble with some of these tasks, what hope does a non-specialist have of fixing their brand new shiny money-burner when it decides to become non-functioning, or, more insidiously, simply fails to work as expected, in some subtle and hard to debug way? As my wife says, there’s no hope: she claims the typical user needs to hire someone to help them out, and that’s why the Geek Squad does so well.

Maybe she’s right. But, I hope by putting some of this information out there, I either help some poor shmoe just like me solve their problem … or convince an operating system designer to start thinking energetically about how to make the problem just go away.

-the Centaur

Next up: why pick a (new) iMac?