Further Adventures In Rebuilding My Linux Machine.
(Please pardon my technobabble…)
I realized pretty quickly that I’d done a bad thing by not backing up my /home directory like I should have on the same weekly timeline as I back up the NAS and the art room Mac. But there was another piece of the puzzle that I needed to back up too apparently, and that was my /etc folder, because that had the fstab file in it which tells the system how to mount its drives. More specifically, how to mount my NAS. First thing I needed to accomplish in this rebuild is getting my NAS (that’s Network Attached Storage) mounted. That is where I keep my important data.
A further complication was I use a credential file during the mount process, rather than have the mount credentials written into the fstab file. I keep that credential file somewhere only root can access it. And to even further complicate things, I use an odd local IP address for the Router and its kingdom, not your usual 192.168.1.1 thing, and thereby also the NAS. I had backups of my home directory and the fstab file, but they were old and did not have my current IP addresses for mounting the NAS. So I didn’t have my current NAS credential file, And didn’t have the current fstab file which would have told me at least what IP addresses I was using locally.
Basically I was just keeping some of that stuff in grey cell memory, or worse, just lackadaisically letting the browser cache and password manager just pop the correct values into the address bar and the password field. At least I had the router password in my commercial password manager…but not its IP address, which I should have added to the notes about that login. So I was in a bit of a catch-22 position.
Being as when I have it in the docking station, my Linux machine is hard wired into the router network, I didn’t need its password to get logged onto my LAN, which I would if I tried to use the WiFi. The easy thing was just open a terminal and use ifconfig to see my address, and that should jog my memory as to the local ip address format I am currently using. Then I can log into my router and find the address of my NAS.
Hahahahahaha ifconfig has been Depreciated!
Okay…so ‘hostname -I’
At some point I reckon I need to start using the new and most wonderful new thing which is ‘ip’ and become familiar with all its wonderful arguments. Okay…irritated me aside, there was actually one that would have saved me a Lot of effort: ‘ip neigh’. This would have told me my address and that of the router and the NAS too. Yes, yes…Much better. But I am stubborn. After I finished with this I installed the depreciated network tools package to get ifconfig back. But at least now I know about ‘ip neigh’.
So now I have the router ip. So I go to its page and…I have no idea what my router’s page password is. Oh wait…at least I had that one in my commercial password manager and it actually does prepopulate the credential fields for me. So I log in and check the NAS address. Then I try to log into the NAS to verify its credentials…which I never put into the commercial password manager, and the old credential file does not have the current NAS password. So I couldn’t get in, which means I can’t regenerate the credential file and mount the NAS.
Apparently it was the browser password manager that was always filling that in, not the commercial password manager. So I never put it in there. Swell. But when I reinstalled chrome and logged into my google account that should have brought all the browser passwords over too, but chrome was not filling in the password field for the NAS and I freaked that maybe they’d all been blown away in the crash. In desperation I checked the google password manager and found it in there. Why it wasn’t automatically populating that field I have no idea, but first thing I did was create a login for the NAS in the commercial password manager and put the right credentials into it. I’d really rather the browser wasn’t doing passwords and this is why.
So now I had my NAS address and credentials. Now I could reestablish that credential file and add the fstab directive to mount my NAS. But instead of using the location specified in the most recent fstab file I’d backed up, I just winged it from memory…which by now I should know better than to do…and sure enough the location I had in grey cell memory wasn’t it. At some point I’d put it somewhere only root could get to it instead of just depending on its file access permissions and that it is a hidden dot file. Fine. I corrected that problem and finally, Finally, I had my NAS mounted and I had access to my data.
First item of work was establishing a weekly home directory backup to the NAS. I created a folder, ‘suse_home_current’ and created an rsync command string from the ones I had backed up for doing the weekly NAS to USB drive backups, and gave it an initial run. I’ve only just started to rebuild my SuSE machine and already the .cache/google folder was a monster, so I decided to exclude it. The nice thing about chrome is it resync’s a fresh install with all your plugins and stuff so I don’t think backing up the cache is really necessary. Next step is to create a back up for /etc, so I always have the current fstab and httpd.conf stuff and anything else I might need to recreate for the next time I have a system drive crash.
Because…yeah…I Knew this would happen sooner or later, I just didn’t think it would be such a big deal as long as I had my data in the NAS and the NAS is two RAID 1 mirrored drives and backed up with a rotating set of USB drives.
But…no. At some point I should probably just invest in a whole drive backup process for the Linux box, like I have for the Macs.
What better way to spend an 11 degree morning here in Charm City, than building a Linux machine on top of a Windows 11 machine. And doing it in such a way as I can use both operating systems without messing with a dual boot loader.
Last year I bought an LG Gram 17” laptop at Costco, when I saw one there at a good price. I was a few months into my part time return to the Institute, and while I liked the Macbook Pro they gave me to use (very nice, very powerful, Very Expensive), I felt I also needed a Windows machine too so I could use some of the Microsoft development tools I’d used there before. Before I retired I had both Windows and Mac laptops on my desk, side by side and used them both. Being that the Gram was my personal machine I could only connect it to the Guest network at the office, but that was okay for my purposes.
Over time I came to really like that LG Gram. It is thin, lightweight, has a very impressive battery life, and a really Really nice display. I came to despise Windows 11.
So I started wondering about making the Gram a Linux machine instead. Initial reports I saw were that it was difficult to impossible to do on a Gram because it had secure boot software in the bios that had to be worked around. (and why would you need to use anything besides Microsoft’s excellent operating system citizen?) But more recent posts had step by step instructions, and users who said the Gram was a pure delight to run Linux on, once you got it working.
Problem was, I occasionally needed a Windows machine at home and I didn’t want to have to buy another laptop just for that one purpose. An older Dell I had that was once a Windows 10 box began having hardware failures, fan won’t run, won’t charge its battery anymore, and I just need to take it to recycling. The Gram is the only Windows machine I have left. I ruled out dual booting Windows and Linux on the same machine from previous bad experiences with dual boot managers, plus all the work arounds I saw were needed to get dual boot to run on the Gram around secure boot. But I kept thinking about it. Digging into it more I saw that I could possibly create a bootable Linux drive on a USB stick, then when I wanted Linux I could plug that stick in, boot the Gram, hit F10 and select the stick as the boot drive, or just leave the drive unplugged and boot when I needed Windows.
I went about it badly at first. I ordered a 125 gig USB stick and wrote the SuSE Leap 15.6 Linux installer onto it, thinking that I could just tell it to partition the rest of the stick as the bootable Linux drive. But no. When the installer tried to write the boot partition information it could not, because the installer media had that partition locked down. So the first try failed.
I had another, smaller USB stick I’d brought back with all my files from my California adventure. I offloaded those to my NAS and then wrote the SuSE Leap installer to that stick. Now the plan was to boot from the smaller stick and tell the installer to put Linux on the bigger one, theoretically overwriting the SuSE installation media I had on it during partitioning. But both sticks came from the same vendor, Lexar, so when I hit F10 during boot they both displayed on the boot menu with the same drive name and I couldn’t tell which from which.
I took out the big stick, booted from the smaller stick, and when its installer was coming up put the big stick back in, hoping it would still detect it. It did. So now I put the plan into motion. I told the installer to use sdc and ignore sda and sdb. The Gram came partitioned with two 1tb logical drives on the SSD. I could see in the partition manager that came up that sdc was the large stick. I didn’t bother trying to partition sdc because I thought the installer would do that and get rid of everything that was there previously. That was a mistake.
The installation went along until it came to the point of writing out the boot manager, at which point it failed again. When it tried to write into it I saw an out of disk space error, that was probably just no I’m not letting you write a new boot entry here.
So I had to repartition the other stick to get the SuSE installer off it. I made that entire stick one big empty partition formatted as a Linux file system. Then I tried again.
This time it worked. The installer ran to completion without a problem, and the Gram rebooted into SuSE Leap 15.6. I was able to log in and poke around for a bit, shut down, remove the stick, start up and the Gram booted into Windows 11 as usual.
I haven’t set it up fully yet, but now I can boot into SuSE Leap 15.6 on the Gram with no trouble, just by plugging in that USB stick, hitting F10 when the Gram boots, and selecting that stick to boot into. When I need Windows I can just leave the stick out and let the Gram boot as usual.
This is good. The Gram will make an Excellent Linux travel machine. It is lightweight, has a lot of battery time, and a very nice large screen.
I think the joke here is about the letter ‘c’ in the German language, not the C programming language. But it could be about both since trying to learn either one will make you cry.
This quote, which I remembered from way back when but not who said it, has haunted me all my working life in this trade. Until now.
I understand that Dijkstra is a well regarded figure in computer science, but he’s also a prime example of how a person can be very intelligent, and very stupid. These things do not necessarily contradict each other.
Don Juan would say he was defeated by the second foe (clarity). Great intelligence can do that to a person who stops questioning what they know and how they know it. Or to paraphrase Yoda, certainty is the path to the stupid side of the Force. Certainty leads to arrogance, arrogance leads to crankiness, crankiness leads to everyone around you suffering.
Microsoft made many good improvements to the BASIC language that lifted it from a tool to teach students programming to an impressive tool for creating business applications. Microsoft gave BASIC scoping, subroutines and functions that returned values. You could set a keyword at the beginning of a file, and I always did, that forced variables to be declared before their use. You could have unions. In Visual Basic you got try-catch blocks, and eventually the BSTRING which gave you a real pointer to a string instead of a pointer to a descriptor that you had to decode. This was very useful for Windows API calls. In Visual Basic I had COM objects I could use to manipulate all the Microsoft Office applications. But even in DOS PDS Basic I could utilize a rich selection of third party libraries of assembly routines that allowed me to avoid the ON ERROR GOTO hack, and simply test for a return value when I did things like file I/O.
But the essence of it was still BASIC, which I’m sure would have kept it on this man’s shit list anyway. I loved working with it though, because if you gave your variables logical looking names you could write code that almost read like plain english. I made a good living working in BASIC. There was no mutilation, there was emergence. But try telling this to a dick like this man.
Anyway…I just read this on a Facebook page dedicated to the BASIC programming language, and it was very helpful in putting that ghost to rest.
This from Richard Keijzer, really tells you everything you need to know about the man…
Did you ever experience that knowledge of Basic programming was a liability? It prevented me from doing my job. This is what happened:
Last century I was a journalist for a trade magazine in The Netherlands. We got news that computer scientist Edsger Dijkstra was about to give a lecture in Amsterdam and we tried to arrange an interview beforehand. It seems he had a list of people that “indulged in Basic” and I was on that list. He made it very clear that he would not speak to bunglers, and there I stood in the corridor. The door to the room where Dijkstra was staying did not open for me…
So instead I went to his lecture, and transformed the data he gave there into an interview. My editor wouldn’t be satisfied if I returned empty handed.
A couple of weeks later I met with a friend, who was professor of computer linguistics and pattern recognition. I told him what happened and how I felt about that. He looked me in the eye and said: “Dijkstra has written a program to prove the correctness of other programs. The only problem is, his program cannot cope with discontinuities. Now, the GOTO command represents a discontinuity… You do the math!”
Yeah I can do the math. I can also write a very good business application in any of Microsoft’s BASICs. Also Java, and Python. Half of what’s in this website is my own HTML.
I am so easy to manipulate once you have the key. Oh I can come off as a stubborn single minded I Don’t Care What You Think so and so, yes. Also The Brat can be provoked out of me given certain specific events. Just ask a certain German someone. But once someone has that key I can be talked out of or into practically anything.
Obviously I guard that key carefully. It’s why I will often just walk away from a situation I don’t want to be in, rather than talk it out and get dragged back into somewhere I don’t want to be, especially if it’s someone I like, or did like at some point. It’s very easy for me to brush off angry people. It’s super easy for me to take a walk from someone who questions my intelligence after I’ve already taken the measure of theirs and found it wanting. But if you have that key it’s nearly impossible for me to keep my mind made up about anything you don’t want me to keep it made up about.
So just a few days ago I got a shock at work, and that on top of all the changes to the work environment which had to be made for security reasons (the arms race in cyber space between the good guys and the bad never lets up and we have an active mission going on) made me determined to go back into retirement. I was in tears. A bit of software I’d created that I was intensely proud of got snatched out from me with no notice. I was simply cut out of it. That, and the constant security roadblocks I was colliding with trying to do the work I was tasked with, was too much for me. I’m 71 years old and too old for the stress and heartbreak. I had not come back out of retirement for all of this. I told them I was retiring. Again.
The short version of the story is I got talked out of it.
I’m easy.
I’m hoping we’ve all arrived at an understanding that I’m just keeping an open mind. I have not committed to staying. We will, hopefully, work though things and see if the solutions proposed are agreeable to me after all.
But I have my doubts. There is more to me than the computer nerd/software engineer, but all of it centers on the fact that I am (yes I know it sounds pretentious to say so) an artist. I bring that to everything I do creatively. If the work isn’t worth giving my heart to, then it’s not worth doing. You only get one life and let me reach back into the religion of my childhood and say (I mean this) that it’s a sin to allow yourself to do work without heart. It’s like sex without love. Okay…yes…I realize there are people who are fine with that as long as the money is good. I am not. It’s why for most of my young adult life I bopped from one job to another to another. Once my heart stopped being in it, I was tendering my resignation. Although sometimes I got the boot before that when my sexual orientation became an issue. Which I was fine with because I don’t want to be anywhere people like me are held in contempt either.
There is art I have brought to my work that I must continue to be able to bring to it if I am to stay long term. In the short term, there is a Very Important project I am committed to bringing forth, a proof of concept, and I am going to do that however the f*ck I have to, because I agree it is Very Important and I am Going to get it done.
This came across my BlueSky feed a few days before the New Year…
I dunno…was the NY Times ever really the paper of record they’ve always claimed to be? All the news that’s fit to print is it? Whatever.
One of my first contract software engineer jobs was for a utility company that had a timesheet/work measurement system that would have absolutely failed after December 31 1999 if it wasn’t fixed. It stored and sorted dates as YYMMDD strings, which means that 000101 (January 1, 2000) would sort Below 991231 (December 31, 1999) since its the smaller number. It would look to the system as though January 1, 2000 came Before December 31, 1999, not after. Time does not flow that way but, as they say, garbage in, garbage out.
Instead of fixing that system they moved to a new third party system that tied into their mobile data terminals and which of course was Y2K compliant. I wrote a bunch of updated Visual Basic stuff using Microsoft’s 32 bit date-time serial number functions. I worked on that migration years before Y2K. Lots of work had to be done years before they day the rollover happened.
People snarking about how Y2K was a non-event almost never understand the scope of the problem and how there were lots of systems that had to have the fix in Years before midnight December 31 1999. Things that had to calculate over the Y2K boundary years in advance. I read stories about retired COBOL programmers who came back to work on it and made some money fixing some big iron stuff. So the fixes were rolled out over a period of years beforehand.
But there was also a bunch of stuff that needed fixing Just for the millennium turnover. And it got fixed. I think the day after I only heard about a couple minor things like a bus token system that failed somewhere.
I’m surprised people are Still snarking about it. I shouldn’t be I suppose, given the last election. We fixed the problem, those of us in the trade. So everyone taking pleasure at snarking about that non-event…you’re welcome.
I really need to keep in mind that I’m part-time and only getting a part-time salary, and so I really need to not let myself get drawn into things during my off time that aren’t urgent.
I’ve hit my 40 for this pay period but I still needed to complete some back to work on boarding stuff before midnight tonight, so I went ahead with that. Then because I was already logged in I started fiddling with some code I need to get working again so the reporting overnights can start running again. All of that is a code base I created back when I was full time and hadn’t yet retired.
So I start looking at things in the code with an idea that I’d just get a better idea of what I needed to do next week. Next thing I know I’m immersed in that report code, and I had to force quit myself. Because today all of the time I spend working on it would have to be non-comp time if I kept at it…which I really wanted to do because I can’t stand a software problem I haven’t figured out yet.
But no. I’m not hourly, I’m salaried and that means no overtime. I’m fine with that, and if I have to work non-comp for urgent things I will. I did that back in the day and especially while I was working on JWST. But sometimes I just did it whether it was urgent or not because I could not stop myself until I get it figured out.
See…that’s going to bother me…
I knew when something was going to nag at me all night long if I didn’t figure it out. A shrink would probably have a field day with me I suppose. But it did get me good performance reviews.
I have to pace myself now. This isn’t urgent Get to it next week…
I had a lunch meeting with my project manager yesterday. It was a thing I asked for so I could get a more detailed idea of what I would be working on my first days back. Since it’s official now he could give me those details.
But… Oh lord have mercy…someone forgot to put fresh condoms on the buzzwords and they’ve multiplied by orders of magnitude since I’ve been in this trade.
Among all the new ones I am currently learning, I commend “NoSQL” to your attention. I had not heard of such a thing until yesterday as I was digging through the documentation of a tool I will likely be using going forward. The term has been around since the late 1990s, but only since 2009 to describe a non-relational, no schema, non-tabular data store…so I am told. I’m reading about this and thinking it’s like a stream of consciousness Word document that’s copied as many servers as needed to hold it all. But they wouldn’t do that.
I can see why they’re going this way…the firehose of data that some projects have to manage now, and the need for flexibility in how the data is characterised, begins to overwhelm traditional relational database management systems. But seeing line items such as “Many NoSQL stores compromise consistency in favor of availability, partition tolerance, and speed.” and that most NoSQL stores lack transaction integrity assurance mechanisms, makes me skittish. I am still trying to understand how you get data back out of one of these. Oh…and with any assurance that it’s the same data you put into it.
Life goes on. I alluded earlier to a dear friend of mine who has this tick about warning me not to let the world know that you’re crazy. But what else is it to be earning a living in this trade, if not doing just that.
Yesterday afternoon I took a walk to The Space Telescope Science Institute building on the Johns Hopkins Homewood campus to be interviewed for a job there. I haven’t done that since the week before Thanksgiving in 1998.
A few months ago the project manager I had when I retired asked if I would be interested in returning to the Institute to work part time. I told him yes, definitely. That was the way I wanted to retire initially; not belly flop into full time retirement but gradually, starting with part time work. But at the time my project manager said that part time work wasn’t a possibility. So I retired full time. Now it seemed it was on the table and yes I was still interested. Very much so.
So then he and I talked on several occasions about my coming back part time. We would meet for lunch or dinner at one of the local eateries. He indicated that part time work was something they were working on setting up and was I still interested. It would be, he said, for the same work I was doing before I retired, but mostly for the next generation space telescope, named for Nancy Grace Roman. I’d already done some initial work on that project, coding a progress report in python, that was to be sent to NASA.
For a while I heard nothing, and began to wonder if the idea had been shelved. Then about a month ago I was informed that a part time position I could apply for was being posted, doing basically the same work I had been doing when I retired. There was also a full time position of the same kind opening. So I applied for the part time position.
About a week ago I got a call from HR to schedule an interview with my project manager and another co-worker who’d been bumped up the chain. That was the interview I had yesterday. It went very well.
They still have some people to talk to, but I think I’m in a good place to get the position because it’s doing stuff I was involved in when I retired, so I won’t need any training on any of it, and a lot of the work will be tweaking code and systems that I either wrote myself or helped to build. I know the culture at the Institute and how things are generally done. I think I’m a pretty good fit.
But nothing is final yet, and so I was told, most likely won’t be until possibly end of September to mid October. But this felt good. In fact, I’ve felt more alive since the interview than I ever have since retiring.
Retirement has a lot of perks, but I’ve found it to be very confusing too. There is always housework to do, and I can travel more freely. But some days I just don’t know what to do with myself and at this age that isn’t good. I don’t think I have the stamina for full time anymore, but part time is good. They say it’s a permanent, not temporary position. I could see working it all through my 70s if the position stays viable that long (space work is always at the mercy of the Federal budget) and my health stays good. Maybe even longer. And I keep getting excellent reviews from my cardiologist so there’s that.
It’ll mean no more months long stays in California anymore, but I’ll still get vacation time so it’ll be more like it was all along when I was working. And supporting two different living spaces on two different coasts was starting to stress my budget. It’ll also mean I can stop feeding from my 401k and just let it grow which is Very Good. They’ll be making contributions to the 401k again and I can make my own as well. And I’ll still be getting social security and my annuity to make up the difference between a full and park time check.
And I can enjoy a morning walk to the office again, weather permitting. Not having to deal with commuter traffic was one of the best perks I worked out for myself by getting this house so close to Hopkins.
So we’ll see. I think I’m a pretty good fit for the position but I’m not going to count my chickens before they’re hatched. What I’d really like is to be working on Space Stuff again, and having that purpose and structure back in my life. It was a great trip. I could take it again.
Why? Why on Earth?? When I have so many other things around the house that need doing.
So I’ve been doing some “downsizing” here at Casa del Garrett, mostly getting off of old computer manuals and documentation I will never need again (these go to recycling so at least the paper can have another life), plus some other items in my extensive (not kidding) library that I will probably never read again, and don’t seem likely to ever be reference material. I’m still trying to find a second hand book repository for these.
It began when I had to buy a new furnace/AC unit and had to move around a bunch of furniture for the contractors to work. That gave me an opportunity to clean in places that are otherwise hard to get at. In addition I had a duct cleaning done, which had probably not ever been done since the house was built, judging by what the duct cleaners found. So I had to move around a bunch of other furniture too.
Before putting it all back, I decided to use the opportunity to do a little downsizing. The fact is I have too much Stuff. I’ve lived in this house since the summer of 2001, but moved into it with a lot of stuff I’d accumulated over the years. Much of that, like my hand and power tools, and all my spare parts, proved to be even more useful when owning a house than they were when I was living in apartments and the basement of friends. But I’d also managed to collect a pretty large library of books and LPs…a fact the movers probably didn’t appreciate since both are very heavy when boxed up. And I was already loaded with computer stuff, since I was by then making a living as a software engineer, which was what enabled me to buy a house of my own in the first place. And before that I was into computers partly as hobby, partly as a means of communicating over a modem. When I discovered modems and BBSs I dove into it. That led me to volunteering on a local gay BBS, and that led me to my first jobs writing software.
Which brings me to this. It’s an IBM PS2 Model 80…the top of the PS2 line once upon a time. My first big W-2 software gig was at Baltimore Gas and Electric Home Products and Services, which was an exclusively IBM worksite The big iron downtown was all IBM, and in the offices where I worked everything on the desktops was a PS2…usually a model 50. or 55. So when I came across this model 80 for sale at a computer flea market years later, I was already pretty familiar with them.
Poor thing has just sat in my basement storage area for over a decade, beside an Apple PowerMac G5 I bought for the art room and eventually replaced with an Intel based Mac Pro. As I began deciding what to downsize around here, I looked at both of those computers and the space they were taking up. It seemed ridiculous to just be holding onto them when I knew I’d probably never need either one ever again. But I didn’t want to just take them to the city recycling place. This wasn’t like giving up an old VCR or TV…both those machines were the top of their lines back in the day. I knew some collector would want them both. But how to find them good homes?
And the more I thought about the PS2, the more I remembered the days of DOS and how the advent of the personal computer seemed to open up fantastic new worlds…worlds which, surprisingly I found I could navigate pretty easily. I didn’t have a college degree in computer science and wasn’t likely to ever get one since I had no money for college. No matter in retrospect. Computer logic just seemed to click with me.
Long before that first job, and those first days volunteering at G.L.I.B. (The Gay and Lesbian Information Bureau) I discovered I could build my own IBM PC compatible from parts. There was no way I could afford an actual IBM PC, but I could buy a part here and a part there until I had all that I needed. I remember after I built that first IBM compatible and got it to boot, just sitting on the edge of my bed staring at the monitor with it’s 640k memory test still on the screen and an ‘A’ prompt (that first computer initially booted PC-DOS from a floppy disk) and looking at the blinking caret in something like awe. Until that moment my computer was a little Commodore C64. Now I had a Serious computer…and IBM no less. Well…a pretty good copy since it booted genuine PC-DOS, not the more generic MS-DOS. This was no toy. This was International Business Machines serious business. I sat there for I don’t know how long stunned at the awesome computing power I suddenly had at my control. What have I got myself into…
Well…what I’d got myself into, though I didn’t know it then, was a career that would pull me out of near poverty and eventually into the space program. Walt Disney was fond of saying his success story all began with a mouse. Well mine began with a boot to DOS. And I rode it all the way to the James Webb Space Telescope Mission Operations Center and Integration and Test Lab.
So that PS2 machine had more of my life wrapped up in it than the PowerMac by light years. I began to wonder if I could just find a place for it in my den where I could work on it again as a kind of hobby.
I tried booting it the other day and it threw a couple error codes that I needed to look up, but I was pretty sure what they were. The PS2s need a small internal battery to maintain their configuration memory and the one in mine had likely died many years ago. It’s a simple fix…replace the battery and boot with the configuration disk and restore your configuration. But while Googling the error codes I discovered there are hobbyists out there who love to work on these machines. And they know where you can get parts. So that notion of keeping the PS2 as a hobby became lots more attractive.
So I got it running again and I’m just going to let it run for now and see what I can make of it. See if I can give the PowerMac to a good home later.
And try to get all my other stuff around the house done. I still have a lot of Stuff to sort through and decide what to get off of, and what to keep. It’s going to take weeks, but I’m 70, on retirement income, and I need to simplify.
Today in The Computer Geek Chronicles…I don’t know how I’d cope with these gadget’s, especially Apple’s since they seem to love breaking things so you have to buy new hardware you really don’t need. But anyway…
I’m listening to the radio and chance across some sort of Christian tune that I could swear was a note for note steal from a passage in Finlandia by Finnish composer Sibelius. So I go looking for Finlandia in my iTunes library, only to discover I never copied that over. Further investigation shows I didn’t copy it over because I don’t have it on any digital media.
But I have some LP’s with it on them, so I fire up my household stereo, and the turntable which I’m sure is happy to know I still love it. Two good versions are by the very theatrical Leopold Stokowski, who was well known for taking…liberties…with the music he was conducting (See Disney’s Fantasia…). The other by Herbert von Karajan and the Berlin Philharmonic.
Finlandia is political protest. It was written as a veiled protest against Tsarist Russian control of the Finnish press. (One of my favorite composers, Dimitri Shostakovich, often butted heads with his soviet overlords) It has it’s energetic, you might even say bombastic passages. But toward the end is this beautiful, soulful, hymn like passage that gets to me every time I listen to it, the way Ralph Vaughan-William’s similar passage at the end of his 6th symphony’s first movement.
I could easily see why it would be co-opted by the religious set, and in fact Sibelius made that passage into a single set piece for his Masonic Ritual Music with a chorus for solo opera singer. I have no idea what those lyrics were, but they almost certainly weren’t Be Still My Soul.
So anyway, to remedy that omission from my portable music library, I went looking for it on iTunes. I couldn’t find the Stokowski version but I did find a copy of the von Karajan version. Then I remembered I have a problem with copying music onto my devices, ever since I upgraded the OS on my iPhone.
I’m still on old Apple hardware, and for several iterations now I’ve had to add a special software patch to my copy of iTunes on my artroom Mac Pro. Then the software patch simply refused to download due to some unexplained “network error”. Hahahahaha…that’s Apple’s way of saying time to spend more money at the Apple Store.
The bug is well known out in the wild, but Apple, in it’s traditional way, won’t fix bugs that allow you to not buy new hardware. So this means I can no longer copy music from my iTunes library to my iPhone.
The work-around is I buy new music on the iPhone. It still gets copied onto my Mac Pro copy of iTunes once I log in. And this allows me to then copy it to my very old iPod.
Because (don’t start laughing yet…), Apple hasn’t updated the iPod OS in over a decade, so the last patch to make iTunes compatible with the iPod, probably a decade old now at least…Still Works.
Dig it. So for now, until Apple decides to stop letting older versions of iTunes download new music from the iTunes store, I have a work-around to get music I buy from Apple onto my iPod. To get music I buy in CD format and copy into my iTunes library, I have to use a third party app. At least that works without my having to Jailbreak the iPhone.
Some time ago I read an article about safety regulations in some profession, I forget now which. A trainee sat in on a class with an instructor who would go over OSHA law as it applied to them. He began his class by telling the trainees that every regulation he was about to teach them was written in blood.
I spent just over three decades of my life as a software engineer. You could say that my job didn’t involve any hazards to my own health. True enough, I sat at a desk staring into a computer screen trying to mentally picture the algorithms I was creating in program code. Not very dangerous stuff. To me. Unless you count all the alcohol and nicotine I consumed to manage stress (I worked at an IT firm back when I was a youngster as the mailroom clerk, and a programmer there called his inevitable pack of cigarettes his “programmer’s candy”). But what I did was potentially extremely dangerous to others if my program didn’t do what it was supposed to.
One of the contracts I worked on ages ago, before I came to Space Telescope, was for a large medical diagnostic company. I had a piece of their new diagnostic machine’s reporting system. The machine it was hooked up to would identify specimens that had whatever disease they were testing for just then, and the report terminal would keep a database of results and generate reports for individual patients and disease rate of spread in a population for the CDC. The federal government imposed requirements on the software process for medical equipment, including allowable software tools, multiple code reviews, and independent verification of requirements as the software matured. Because lives were at stake.
I wasn’t subjected to that level of oversight at Space Telescope because I was not involved in creating any of the actual flight software. I did business applications mostly, science needs business applications too, although I could also build you a PC if you point me at a source of parts for one. I attended meetings, issued progress reports on my work, discussed requirements with managers. Those I gave my output to, both during development and when it was in production, were able to verify that my software was correct or not from their own experience with their numbers.
I would occasionally get a call from one about something missing from one of their spreadsheets. I was almost always able to trace that to the data not yet being entered in the “problem report” or “discrepancy report” databases. I could re-run the program for them when that was fixed. But now and then I found a bug in my software that I had to fix that was making the numbers wrong. That was unlikely to get anyone killed, but it could have given management a false idea of progress being made. So it was still very important to get it right.
At the major public utility I once contracted for, I worked with an accountant who Knew His Numbers. He could look at my output and go…”ah…you know…I don’t think you’re picking up…” and he would refer to some number bucket, one of many such, that I needed the report to digest. And I would go to my code and look and sure enough I wasn’t doing that. So I’d fix it and run the output by him again. I loved it. He didn’t know software but he knew his numbers, and I didn’t know his numbers but I knew my software and it was a perfect working relationship. He was my independent verification.
I can’t stress enough how important independent verification of your software is. The more mission critical it is, the more thorough that must be. It gets to a point, and I lived this while working on that medical diagnostic machine report, where periodically a group of other programmers get together with you and beat up on your code. It can be brutal. Ask me how I know. But when it’s that important, like with medical diagnostic software, it Must happen. Lives actually are at stake.
But beyond bugs, there’s also making sure both you and your users understand what the software is, and is not doing. Most of the business software I wrote wasn’t about life and death situations, or so you’d think. But that’s not always cut and dried. Like the one at my first big contract at a major public utility where I was tasked with designing and coding a report that would tell management how much revenue each of their field technicians were generating and at what cost. My report uncovered such a massive subsidy of one department by another such that, so I was told later, jaws dropped in the boardroom. Annapolis was Not going to be happy.
Then came the layoffs. I heard later that one of those laid off had a sudden heart attack at his dinner table in front of his wife and kids and died. You could say it was management policies that did that…they knew they were putting money where it did not belong, that they were subsidizing something they weren’t supposed to, but didn’t realize how badly it had become until my report waved it in their faces. So they did what management often does, they just started laying people off to make the money stop going in that direction.
They did that. But…my software did that. Management wasn’t just using my report to tell them where the money was coming from and going to, they were using it to tell them who their best workers were. And I still deeply regret it. I wonder if I couldn’t have done more in meetings to remind them a computer program can’t substitute for human judgment. There was a union that was supposed to be protecting the workers from that sort of thing. You could say none of that was on my plate. But my hands were in it too. He was a nice guy. Always had a friendly smile for me.
I never doubted after that, how dangerous my tools could be.
The procedures and best practices of software development have evolved over the decades from big iron to little silicone for a reason. Maybe they aren’t all written in blood, but they are all at least written in sweat and tears. They say mistakes are human but to really foul things up takes a computer. But no. What it takes, is thinking you can get away with bending the rules. Maybe just this once. Because we have a deadline. Because we have to get it out the door. Because there isn’t enough money for best practices. Just this once. And then the next once. And the next once. And the next. And the next. Take off your engineer’s hat and put on your management hat.
There are reasons for all those practices and procedures. And especially, there are reasons developers do not test their own software before putting it into production. Yes, do your unit testing, but then you hand it off the testers. Testers are your friends. They keep crap from going out the door that worked fine for you but that’s because you were running it on a workstation with all your software tools on it, and the test data you cobbled together that you always use. Out in the wild it will be different.
The physicist Richard Feynman once said (paraphrasing) that science is a way of trying not to fool yourself, and you are the easiest person to fool. I think that’s a good general rule for software testing too. Testing is a way of trying not to fool yourself. And since you are the easiest person to fool, because you wrote it, you hand it off to an independent tester. Or put another way: beware the result you wanted because you had a deadline. It needs looking at by someone with no stake in the outcome, other than honestly reporting did it pass or fail.
There are reasons for the procedures and best practices of software engineering. They need to be respected. Not for the sake of tradition, but for the sake of not screwing things up badly. Because we are human and it takes a human to screw things up badly. But we can be aware of this, and build our guardrails accordingly. We do that, and we are capable of wonderful, marvelous things.
Why am I telling you all this? Just venting. I’m old and cranky is all.
The Apple Way…Of Slowly Forcing You To Buy New Hardware…
…even though the old hardware still works just fine.
I’m almost two years retired now, and computers can still take a big bite out of my day. Today’s exercise in spinning my wheels trying to get things work comes courtesy of Apple. No surprise there. It just works…except when it doesn’t.
Apple really Really wants you to keep up to date on not just their software but the hardware it runs on too. And the longer you delay buying their latest and greatest hardware, the more you find that out. And I’m still on some very old Apple hardware, because I need to stay on a very old version of MacOS. And I need to do that, because Adobe makes you rent their software now, instead of offering upgrades. I use the Macs almost exclusively in the art room for my photography and scanned in artwork from the drafting table, and I won’t rent their software for the same reason I don’t rent my brushes, pens, charcoal sticks and the drafting table.
And especially after Adobe screwed me out of 850 for the Windows version of Photoshop that I had, and was able to use for just over two years until Adobe decided the license I had was incorrect and they remote controlled shut it off.
So I’m stuck, but slowly getting unstuck. GIMP does everything I need that Photoshop did for me. The only stickler is Lightroom, but I’m almost free of that too.
In the meantime, if you have an iPhone and you’ve been keeping up to date with the OS upgrades and security patches on that, and you have an older Mac, you are getting more and more distant from any version of iTunes you are running to sync your iPhone with. Especially your music library.
A few days ago I ordered a CD of the Jerry Goldsmith soundtrack to Logan’s Run. I have had the LP version for decades, but only realized I never got a digital version when I wanted to listen to it on the iPod and it wasn’t there. So that CD came in the mail and I put it into the art room Mac, which also holds my iTunes library, and copied it over so I could put it on the iPhone, and the iPod Classic.
No sweat right? I’ve done this hundreds of times before. Then I found the soundtrack to the new Percy Jackson TV series and bought that off the iTunes store since it isn’t currently available on CD. Now I have two albums to copy over to the iPhone and iPod.
The Percy Jackson one actually downloaded to the iPhone as well as my iTunes library. Fine. I plug the iPod into the Mac and it syncs both albums no trouble. Bear in mind this is a Much older piece of Apple hardware than the iPhone I currently have. Then I try to sync the iPhone and that’s where the trouble began.
I plug the iPhone into the Mac, and iTunes says it needs a software update before it will connect to my iPhone. Fine. I’ve seen this before, after every security patch. Apple still supports my older hardware and the older version of MacOS it’s running with security patches. But now I experience a new problem; an error message saying it cannot download the iTunes update.
So I go looking around the net and lo and behold lots of people are complaining about this happening after the most recent iOS updates. And the thing of that is Apple says it should all be compatible with the older versions of iTunes. So their solutions are to either reinstall iTunes…except the version of iTunes you need for the older MacOS isn’t available anymore, even though it’s allegedly still compatible with the current version of iOS…or reinstall the operating system. Because you really wanted to spend an entire day installing MacOS and all your apps and configurations just to copy over some music to your iPhone.
I spent an entire morning today trying this and trying that to no avail, and swearing loudly that I would never put another update on any of my Apple devices ever again. You cannot downgrade iOS…that’s Apple’s policy. Now it seems, I cannot sync my iPhone with iTunes anymore, which means I can’t back it up, in addition to not being able to sync my music library.
Eventually among the wail of pain out there I see a link to a third party program that claims to run on my Mac Pro version of MacOS, and connects to my iPhone to allow backing up, file copy and music copy from the iTunes library. So I download a copy and give it a try. There was trial version functionality which allowed me to prove it did what I needed and I finally got my music copied over. Then I bought a license for it. It wasn’t expensive and it wasn’t subscription only.
This is it. It’s called iMazing and I can verify that it works…at least on my 2010 Mac Pro and iPhone Xs running iOS 17. So now I can make backups of the iPhone and copy music files over. It isn’t automatic synchronization but I can deal with it. They say it will also let you move your music and other files to an iPod Classic, which gives me some security there because I still like that little dedicated music player.
[NOTE: For some reason I never published this one and it sat in my drafts folder until now. I might have put it up on my Facebook page, but given the formatting here I don’t think so. Anyway…it’s worth putting out here. I am actually pretty good at this stuff…but I’m a year retired now and I want to move on…]
I’m going through a bunch of old documentation in preparation for retiring in a couple months. My project manager quite reasonably wants me to basically do a brain dump and put it all out where they can access it after I’m gone. It’s bringing back a lot of very happy memories. And also not quite so happy ones. I created a bunch of custom software for them that I am still intensely proud of, that just got trashcanned, in some instances even before I could release it for general use.
That happens in this trade. One of my contract jobs before coming to Space Telescope had me working on an interactive tutorial for Microsoft Office products, that had already been superseded by newer versions. When I came onboard I wondered how long the contract was going to last, given that we were working on a product for teaching users how to use a version of Office that was already obsolete. And sure enough, about a week later the project was cancelled. I felt really bad for the employees of the business that had been working on it for months before I was brought in. All that work…all that time out of their lives…just out the window.
I’ve had several moments of that working at Space Telescope. It happens and I was told not to worry. Some way more experienced developers than I had it happen to them multiple times. The environment changes out from under the work you’re doing and you have to throw a bunch of stuff away and start over. At least in this business you can often reuse some of the old code. But nonetheless, it still makes you doubt yourself. I wasn’t good enough…
As it happens, Facebook this morning showed me the following memory…a post I put up while going through my old DayTimer pages (I used to use DayTimer’s 24 hour pages as a work diary) about something that happened to me from back before I came to the Institute. Out of everything that ever happened to me while plying this trade, this one jobsite holds for me both the best of my times, and the absolute worst. I have never hated working for a company, and its managers, more than I hated everything about working there. Yet it proved to me just how good I am at doing this. I solved a problem that none of them could figure out, and I did it with only paper print outs of the code.
I should have posted this here too, instead of only on Facebook. But I’ll do it now. Because I need to remember this going forward. I am actually pretty good at this stuff…
Condensing the last of my Daytimer pages…I’m glancing over the entries for what was one of the worst contracts I had…the two weeks I spent at a big insurance company not far from where I live. The story I got was they’d just undergone some massive layoffs and the environment there was bitter, resentful and hostile toward contractors. After a week of enduring loud, angry shouting matches among the managers there I was telling my agency to get me the hell out of there.
In the two weeks I was there they never got my network account properly set up. For a few days after clearing it with the manager there, I brought my personal laptop in to get some work done, but then one of their lobby guards tried to confiscate it and I pitched a fit that got one of the directors called down and I was allowed to take my laptop home and from that time on I did my work with paper printouts of the code I was supposed to be debugging. I am proud to this day that I was able to pin down several reasons why their software was blowing up using just those paper printouts.
Here’s some of my Daytimer notes from the battlefield…
– Resolved GPF problem on external program module. Share must be running or program will GPF when initialized.
– When recommended that install be changed + test for presence of share be coded into the program, suggestion by **** that I just wanted to spend their money on useless trivia.
– Hostile toward suggestion that GPF condition be trapped for and handled gracefully. “We could be dealing with millions of little problems like this” was what I was told. (Better I guess to let the program blow up and make the user restart it than put error trapping where your lazy programmers couldn’t be bothered..)
– I can run the system but not in debug mode and I can’t access files I need do my work. When asked about this I was told it was my problem and if I can’t fix it myself then why are they paying me to be here. So I dig a little deeper and find out my network account is USER not DEVELOPER which explains why I don’t have privs on those files. When pointed this out I got an angry stare and was told they would look into it when they have time.
– Told my workstation is user configured and not to be reconfigured because it is against LAN policy to reconfigure user workstations, and I just have to do the best I can. Still using ****’s (this was another developer from the same agency I was working for, who’d been there longer) from workstation as I can’t log in on mine. Cannot log in to developer area on any workstation though, not just mine.
One afternoon during this time I met a neighbor of mine at the apartment complex I lived in then, who worked for a different agency as we were both getting mail from our mailboxes. I asked him what he was working on and he asked the same of me and when I told him first words out of his mouth were, “Ohhh… Rough Place.” Apparently everyone already knew it was a notoriously bad place to be a contractor but me.
And from the comments I replied to, was this from me…
Yeah. Some of my favorite programming code horror stories come from this place. I was called in to find out why their reporting system kept blue screening their workstations. It was written by some staff programmers who allegedly had their BS in CompSci but the code I saw was so full of problems I don’t think a half-wit would have made that it made me wonder. They weren’t fixing it themselves because they were leaving the company for allegedly better paying jobs elsewhere. At least that was their story. I suspect they were just getting the hell out of Dodge before it dawned on anybody how incompetent they were.
I tracked down the blue screen of death problem to the fact that these idiots used a bunch of global variables (named…I Am Not Kidding, GlobalDummyInteger1, GlobalDummyInteger2, GlobalDummyInteger3…and so on…) and were storing handles to windows in them at the same time they were using them to store things like the result of a button press or a for-next loop counter. But to fix it would have required a lot of rewriting of the code base and they were already saying to my face that I just wanted them to trap for errors whenever they tried to access a share to spend their money.
I have no idea what eventually became of that system but it just needed a complete rewrite to be stable and I suspect they eventually contracted out of house for a new one but who knows…they may still be telling their users to just reboot their machines whenever they blue screen.
This blog is powered by WordPress and is hosted at Winters Web Works, who also did some custom design work (Thanks!). Some embedded content was created with the help of The Gimp. I proof with Google Chrome on either Windows, Linux or MacOS depending on which machine I happen to be running at the time.