[connection] # 0: default, 1: leave untouched, 2: disable, 3: enable wifi.powersave = 2
04 February 2023
I’ve been coding for a very long time, so I’ve had lots of projects in various languages, on various platforms, and stored very differently.
I got nostalgic on and off over the past couple years and went digging around to recover the source for some of those old projects. I uploaded the more notable projects to my GitHub account.
I spent money to buy a 3.5-inch USB floppy drive and an old 386 PC with a 5.25-inch and 3.5-inch floppy drive, so I could ultimately copy files from really old 5.25-inch floppies that I used in the late 1980s and early 1990s to my live storage of today. Among those old files were binaries and source in GWBASIC and QuickBasic.
I found one of the first games I wrote and sort of distributed, Gravity Blocks. I could play the compiled binary with DOSBox and read the main source file, but some of the source code for my common libraries is still locked up in a compressed format from QuickBasic 4.5. I may need to dig deeper into QB64, a clone of QuickBasic 4.5 that seems to be able to read, run, and compile those old compressed files.
I also found source code for the first software I wrote for the local fire company to help track statistics on calls and print reports to submit to the local municipalities we served.
It was written in GWBASIC, so I was able to decode the compressed source where needed to read it. I published my CALL-REP source, so I could go back and have a look at the simple, but useful, things I used to write as a kid.
I continued to build stuff through college (and obviously beyond). Some of it was in C, PERL, and Java.
I recovered these bits
of source code
laying around in backups and copies
of old Linux servers I’ve run
over the years.
This source was in old Subversion repositories
that used old versions of Berkeley DB.
Initially,
This BDB version mismatch
kept svn checkout
from working,
but the current Subversion tools
have an svnadmin recover
command
that could fix the repository
for normal reading today.
I’m sure some
of those old SVN repositories
had previously been migrated
from CVS.
I found the source code from my final project in the Java class in my last year of college in 2000.
Pop-a-Prof is a clone of my favorite puzzle game, Bust-a-Move. It’s a Java Applet that ran in Netscape allowing any number of players, and it coordinated everyone’s play with a shared public server, Each round lasted 5 minutes, and any time you topped-out, you’d lose some points, and start over, so no one needed to sit around watching the last people battle it out.
After school, I started on Pop-a-Prof 2. This one ran as a plain Java application, and implemented rebounding balls in the game. It was more of a proof-of-concept for the new game mechanics, and it never got network play.
I liked running little bits of code, like applets did, so I continued into writing Java ME (J2ME) for my feature phones around 2005.
I did a gas-logging app that stored fuel-ups and drew graphs to show fuel economy.
I also wrote a quick little game called Ben’s Backhoe to give the kids a little something to do on my phone. By the time I was building this sort of thing, though, I’m a decent Java programmer, so it’s not the fun mess that we see in the other old project.
I spent most the day poking around at various old BASIC files and trying to tweak them a bit to run in PCBasic or QB64. I used lots of weird graphics modes from the Tandy 1000 and didn’t think much about portability. I may post more projects over time.
02 January 2023
The Friendly Orange Glow tells the history of a piece of educational software, PLATO, that grew into a whole microcosm of the internet and cyber culture years before the internet we’ve known for the past 25 years.
Brian Dear attributes the obscurity of PLATO to it having been built and developed at University of Illinois in the Midwest and not at a school on the coast. The PLATO system also used dedicated client hardware with integrated slide projectors, and it ran on a single mainframe. Everything was coded in a programming language called TUTOR, which was primarily designed for authoring interactive lessons using the orange gas plasma display, a rudimentary touch input for the screen, the keyboard, an slide projector integrated into the display, and even occasional peripherals like some sort of synthetic woodwind sound device. It was all very specialized from the beginning.
I loved the time the author dedicated to describing technical details, like how the orange gas plasma display was developed: the grids of wiring, pockets of noble gases trapped between them, and the way accidental contamination allowed them to discover a memory effect they could use to keep each pixel lit. Fixing the contamination lost the memory effect. He presented a wonderful level of detail for my interest.
Donald Bitzer showed off PLATO to anyone who would take a moment to try it. He wanted people to learn and get creative, seldom shutting down experiments. He’d embrace the high school and university hackers who would wander into the labs, and he put some of them to work building hardware or testing. These people would go on to build all sorts of multiplayer games and other software to be used by other users on the system. Bitzer recognized the value in observing what people did with the spare cycles of the system at night. From that freedom sprung an entire hacker culture similar to what I found in my youth, so I felt great nostalgia for this work. Again though, I was discovering this culture in the 1990s with bulletin board systems and the internet in college, and Bitzer’s revolution had already happened in the 1970s. We were always pushing the limits of what we were supposed to do with these systems. It looked like wasted time, but we learned the most.
Discovering new lessons or software on the PLATO system seemed akin to our exploration of BBSes via our modems in the 1990s. We’d stumble around trying to find some new phone number or new corner of an existing BBS, and these kids in the 1970s were exploring PLATO to find games or long threaded discussions in notes that others were developing.
PLATO started as a way to display some slides and teach a self-paced lesson, but grew into games, forums, and email before such things existed. It could have grown into one of the great online services that followed, but they may have gotten too tied up in their centralization and specialized hardware. The management of their commercial partner may not have helped either, because they just wanted to sell mainframes, and didn’t recognize the value of community that had been built around the system.
The book was an exciting listen, and I blasted through the whole thing in about 2 days, because I just couldn’t put it down. It reminded me of my childhood and the all the potential of the systems of the day and the creativity that came from the limitations of the day. PLATO evolved in an alternate universe in the middle of the country away from the technology hubs.
03 November 2022
I have 73 feeds I currently follow. I have a whole system of prioritization, so I can listen to important things first. I’ve listed them alphabetically here:
99% Invisible https://feeds.simplecast.com/BqbsxVfO
All About Android (Audio) https://feeds.twit.tv/aaa.xml
All Songs Considered https://feeds.npr.org/510019/podcast.xml?uid=n1qe4e85742c986fdb81d2d38ffa0d5d53
Android Central Podcast https://androidcentral.libsyn.com/rss
Arrested DevOps https://www.arresteddevops.com/episode/index.xml
At Liberty https://feeds.soundcloud.com/users/soundcloud:users:40330678/sounds.rss
Back to Work https://feeds.fireside.fm/backtowork/rss
The Best of Car Talk https://feeds.npr.org/510208/podcast.xml
The Candid Frame: Conversations on Photography https://thecandidframe.libsyn.com/rss
CaSE: Conversations about Software Engineering https://www.case-podcast.org/feed/aac
The Changelog: Software Development, Open Source https://changelog.com/podcast/feed
ClojureStream Podcast https://feeds.soundcloud.com/users/soundcloud:users:627190089/sounds.rss
Cognicast https://feeds.feedburner.com/cognicast
The Daily https://feeds.simplecast.com/54nAGcIl
Darknet Diaries https://feeds.megaphone.fm/darknetdiaries
defn https://feeds.soundcloud.com/users/soundcloud:users:220484243/sounds.rss
Distractible https://feeds.megaphone.fm/QCD8163454930
Do By Friday https://feeds.simplecast.com/5nKJV82u
Do By Friday After Show (Private Link)
Don’t Ask Tig https://feeds.publicradio.org/public_feeds/dont-ask-tig/itunes/rss.rss
Engineering Culture by InfoQ https://feeds.soundcloud.com/users/soundcloud:users:258266127/sounds.rss
Escape Pod https://escapepod.org/feed/podcast/
Everything is Alive http://feeds.everythingisalive.com/everythingisalive
FLOSS Weekly (Audio) https://feeds.twit.tv/floss.xml
The Fox News Rundown https://feeds.megaphone.fm/FOXM1880458659
Freakonomics Radio https://feeds.simplecast.com/Y8lFbOT4
Functional Geekery https://www.functionalgeekery.com/feed/mp3/
Global News Podcast https://podcasts.files.bbci.co.uk/p02nq0gn.rss
Grammar Girl Quick and Dirty Tips for Better Writing https://feeds.simplecast.com/XcH2p3Ah
Groovy Podcast http://groovypodcast.podbean.com/feed/
Hacker Public Radio http://hackerpublicradio.org/hpr_rss.php
Hanselminutes with Scott Hanselman https://feeds.simplecast.com/gvtxUiIf
Hidden Brain https://feeds.simplecast.com/kwWc0lhf
How I Built This with Guy Raz https://rss.art19.com/how-i-built-this
Interview Podcast – Echoes https://echoes.org/category/program-highlights/interviews/feed/
Jeffery Saddoris: Everything https://pcr.apple.com/id1438550795/
JS Party: JavaScript, CSS, Web Development https://changelog.com/jsparty/feed
JUXT Cast https://feeds.feedburner.com/JuxtCast
LensWork - Photography and the Creative Process https://www.lenswork.com/podcast.xml
Linux Inlaws https://linuxinlaws.eu/inlaws_rss.xml
Lost in Lambduhhs https://anchor.fm/s/581d4eb4/podcast/rss
Marketplace All-in-One https://www.marketplace.org/feed/podcast/marketplace-all-in-one
The Mortified Podcast https://feeds.feedburner.com/MortifiedPod
No Stupid Questions https://feeds.simplecast.com/dfh_verV
NPR News Now https://feeds.npr.org/500005/podcast.xml
Oh No, Ross and Carrie https://feeds.simplecast.com/ftB6Gihc
On the Media https://feeds.feedburner.com/onthemedia
People I (Mostly) Admire https://feeds.simplecast.com/rP60Wf24
Podcast – Cory Doctorow’s craphound.com https://feeds.feedburner.com/doctorow_podcast
The REPL https://feeds.therepl.net/therepl
Security Now (Audio) https://feeds.twit.tv/sn.xml
Smashing Podcast https://feeds.transistor.fm/smashing
Software Defined Talk https://www.softwaredefinedtalk.com/rss
Software Engineering Radio - the podcast for professional software developers https://seradio.libsyn.com/rss
Song Exploder https://feed.songexploder.net/SongExploder
The Stack Overflow Podcast https://feeds.simplecast.com/XA_851k3
TED Radio Hour https://feeds.npr.org/510298/podcast.xml
This American Life https://www.thisamericanlife.org/podcast/rss.xml
This Week in Tech (Audio) https://feeds.twit.tv/twit.xml
Thoughtworks Technology Podcast https://thoughtworks.libsyn.com/rss
Wait Wait… Don’t Tell Me! https://feeds.npr.org/344098539/podcast.xml
Welcome to Night Vale http://feeds.nightvalepresents.com/welcometonightvalepodcast
What’s Your Problem? https://www.omnycontent.com/d/playlist/e73c998e-6e60-432f-8610-ae210140c5b1/32c25e85-1667-4acb-99fd-ae3c0021f33e/beacef48-19d2-4f52-b9e8-ae3c0021f347/podcast.rss
Wicked Good Development https://anchor.fm/s/81a22db8/podcast/rss
Wrong About Everything https://wrongabouteverything.libsyn.com/rss
WTF with Marc Maron Podcast https://feeds.acast.com/public/shows/62a222737c02140013aa4c03
You Are Not So Smart https://feeds.simplecast.com/N5eKDxJI
26 April 2022
I had previously flailed around trying to fix occasional WiFi drops on my Pop_OS(Ubuntu) laptop. The intermittency made it hard to know if I really fixed it or not, and it turns out I hadn’t.
I installed Arch Linux on another computer here on my desk. While it sat around idle, I found it one day having lost its internet connection just like the Pop_OS machine does!
Now I knew this problem with the network connection wasn’t isolated to one machine. To recap:
the wired connection is fine
the Mac on the wireless network is fine
the mobile devices are fine
the 2 linux machines drop their connections every couple days
I started the search again for a solution with more information. I found some hints about power-saving options in NetworkManager.
On the Pop_OS machine,
there’s a configuration file,
/etc/NetworkManager/conf.d/default-wifi-powersave-on.conf
,
that I changed to disable powersaving:
[connection] # 0: default, 1: leave untouched, 2: disable, 3: enable wifi.powersave = 2
I had to add a file to the Arch machine in the same location to hold this configuration. Now these machines have been maintaining their connections for days.