S3 drivers for Windows 3.1

I’ve been playing with Windows 3.x on Dosbox and Dosbox-X – the S3 drivers found on Vogons have not worked for me.

I don’t know if these work, but it is possible to get the original first party S3 drivers via archive.org: https://web.archive.org/web/20090611100530/http://www.s3graphics.com/en/drivers/legacy_software_archive.aspx#id_765drv

Now also mirrored at https://cubiclehermit.com/w9524107.zip in case archive.org goes back down.

Programming Languages, as I learned them (pt1)

I wrote this around 6 months ago, and somehow never published it

BASIC

(1980-83: CP/M MBASIC, Commodore, BASICA, QuickBasic, VB6; a little bit of AppleSoft and TRS-80)

Somewhere around the holidays in 1980 or perhaps early 1981, I had my first encounter with a computer thanks to one of my parents’ friends noticing I was bored at a holiday party. This created a bit of a monster, wherein I’d attempt to borrow time on any of my parents’ friends’ machines I could reasonably borrow. I initially learned just enough MBASIC to load the text based games of the time – Star Trek, Wumpus, that sort of thing – but I got interested enough to start writing simple loops and interactive stuff, and acquired a couple of books about it.

Over the next two years, my elementary school acquired a room full of already-somewhat-aging PETs (some 2001s, some newer) and I attended a programming for kids enrichment program at LaGuardia College in NYC wherein I annoyed the instructors by getting too far ahead. Perhaps more memorable than the curriculum was the fact that they used the dark-case Bell and Howell Apple “clones” (a quick scan of retrocomputing sites suggests they were actually made by Apple and rebadged)

I spent a semester in California (thanks to my dad being on a visiting faculty semester at a university out here) in the spring of 1983 and got exposed to the Commodore 64, which was the first machine I learned some minimal graphics programming on. I got my own 64 that fall — I had been told for about 6 months that we were getting me a Timex-Sinclair for my birthday, and then when prices on the Commodores dropped sufficiently, it turned into a much better machine.

As my folks’ friends moved around that period from CP/M to PCs machines and clones (or in one case, an odd hybrid called the Seequa Chameleon), I learned a fair bit of BASICA/GW-BASIC.

My only major exposure to a non-Commodore consumer rather than business 8-bit version BASIC was on the TRS-80, which the magnet school I attended for one year in 6th grade had a full room of (mix of Model 3 and Model 4 one-piece machines; I had no idea at the time what the difference was) and my main memory is of writing a very simple Rogue-like (in the traditional sense) “move the character-based player around a text map on the screen” UI, although I don’t remember whether there was any “game” to it or just the PC movement. I think the TRS-80 basic had “PRINT @” rather than having to use cursor-movement characters or POKE the screen RAM as on the Commodore.

My folks got a PC (an original IBM XT, in fact) at some point during the in the 1986-87 school year, and I started got pretty good with BASICA, and later with compiled MS BASIC (or IBM Basic; I’m not sure at this point where the copy of the basic compiler came from.) Later, in high school, I got my hands on QuickBasic.

I learned VB6 much later; my employer during my mid-1990s break from college was a consulting firm that was, among other things, a Microsoft reseller. While I didn’t have an MSDN subscription through them, we had access to not-for-resale versions of almost anything Microsoft sold — my understanding is that this was for demo and training purposes, and as an employee I was allowed to order them up and reimburse the company. So I bought VC++ 6.0 and VB 6.0; while I was pretty comfortable with C and C++ (to be covered in later entries in this series) and learned to use both to an extent, doing actual Windows (MFC, etc) programming in C++ never clicked. VB, however, was probably the easiest language I’ve ever used to do desktop GUI development and the language itself was kind of just QuickBasic with a UI designer tagged on. Until I later, when had to do professional work with it, I liked it.

When, coming out of college I got my first programming job, I had VB6 on my resume. That company, Kana Communications (later KANA Software) had both a web client and a VB6 based “Power Client.” I was hired onto the server team – what we’d call back-end now – and was warned at the time not to tell anyone I knew VB6 — I assume lest I be pulled into working on the Power Client (more about this, and Kana in general, under Perl/Java).

When the dot-com bubble burst, and the company became much smaller, one of the things happened was that we needed to get someone to maintain the Power Client, and I ended up volunteering. It was already in maintenance mode (the newest release we were putting out retired it and deprecated the Web Client, in favor of a Java Swing app via WebStart) so there wasn’t a ton of new development, but I did learn to have a thorough distaste for what was by then (late 2001 into 2002) very dated tooling. I’ve half wanted to try VB.net since I became aware of it, but it’s never gotten anywhere near the top of my to-learn queue.

Honorable Mentions

In addition to languages I actually learned, I’m going to have a few other mentions, of languages I’ve gotten exposed to but where either I never finished learning them, or where they’re IMO too close to something else to claim credit for learning a new language.

Honorable mention 1

Logo

(sometime around 1981, revisited in 1986)
I got exposure to this in school a number of times, starting with the PETs whenever it was that my school got them, and at some point I played with it on PET, C64, Apple II and TI. Like pretty much anyone else my age, it was cool creating graphics with the Turtle, and by the time I re-encountered it in 6th grade on the TI, I remember doing some parameterized functions along the lines of “give a number 3 or higher, and my function generates a star with that many points” but I never learned to do much of anything else with it.

Exposure to Python

Python is a language that does not show up on my resume, because my last professional exposure to it (at Panta, in 2004-5) was very negative, and I’ve found if you have something on your resume — no matter how obscure/brief the mention is — someone is going to try to hire you for it. That said, I’ve been doing a modest bit of it lately for a project at my present employer and between support for it in IntelliJ and and ~13 years of improvement, I can tolerate it.

On a second round of use, I’ve found I really appreciate its expressive power, and I can … just barely… tolerate the dynamic typing.

On the down side, I have strongly confirmed my initial impression that it has some of the most unpleasant aesthetic syntax choices of any modern programming language — possibly the worst I’ve come across, barring esolangs, and surviving pre-C languages. It literally manages to make Perl seem like a pleasant alternative.

Fun with Gentoo

Nightly auto-upgrades are great, except when they aren’t. In this case, going from app-misc/screen-4.0.3-r7 to app-misc/screen-4.2.1-r2 changed the default SCREENDIR from /run/screen to /tmp/screen. Normally wouldn’t care, but I had running screen sessions and couldn’t get in; oops!

Only realized about the SCREENDIR variable after I’d already downgraded back to 4.0.3-r7.

What I was doing at age 18

I recently realized that a very important aspect of what I have done for the past year in my day job is echoing how I got started in my career. That is, I spent a bunch of time last year and this year justifying a large technical project — in writing for a less-technical audience — and then working with other people to get it organized and deployed. I’ve also recently in my work gone back to that project — documenting the project so that other folks could finish it, and a non-IT PM could manage it — so that I can get back to programming.

Realizing that, it inspired me to see if I still had the documents I’d written for that original project. It turns out, I did — both the original proposal, and a mid-year budget for the actual ordering once we got the project approved.

So, what was this project? Getting my high school computer lab on a LAN, and on the internet — the latter isn’t mentioned in the original proposal, so I guess it was scope creep, but it was awesome. The project lead to my first full-time summer job and my first full-time job when I took my break from Dartmouth (both doing Novell server admin work plus some desktop support) and I’m pretty sure the project itself — still underway — made a difference in my college applications.

A PDF reconstructing the original documents is here: Networking Computer Resources for Hunter College High School: A Modest Proposal Below the break, reminiscences and a text version of the document itself.

Continue reading “What I was doing at age 18”

Parts from my old (failed) attempt to build a small computer

_MG_0184

Finally inventoried the parts after years in storage. Lot of chips, though nothing that rare or interesting. Somewhere I have the schematics I designed. Will scan them when I find them. I doubt it really would have worked, and I never got an EPROM programmer working. Very tempted to try to figure out how to reuse some of this building something like N8VEM.

List below the fold. Continue reading “Parts from my old (failed) attempt to build a small computer”

A quick bit of FFMPEG magic to improve VHS rips

fmpeg -i Old_VHS_copy.avi -threads 0 -aspect 4:3 -vf "pp=ac/lb/ha/va/dr/al,frei0r=brightness:0.625,frei0r=contrast0r:1.05,frei0r=saturat0r:0.10,hqdn3d=4:4:7,scale=480:-1,unsharp" -codec:a libfaac -b:a 64k -codec:v libx264 -profile:v high444 -preset:v placebo Much_Better.mkv

Found the frei0r contrast/brightness/saturation controls MUCH better than the MP2 ones.

Amount of de-noise (before downsize) and sharpening (after) is to taste, obviously, as is the amount of brightness/contrast improvement. This source was AWFUL!

Commodore Nostalgia

via Slashdot, Programming Books, part 3: Programming the Commodore 64
Prologue about the book itself is worth reading, but the following really resonated for me:

Now I know that there is already plenty of old-fart nostalgia on this blog — a lot of people have interpreted Whatever happened to programming? as a yearning for the days when you had to do everything from first principles, which wasn’t really what I meant. But I do, I really do, miss the days when it was possible to understand the whole computer.

I’m not claiming that I ever had the level of mastery that people like West and Butterfield had. I was never really a big machine-code programmer, for one thing — I wrote routines to be called from BASIC, but no complete programs in 6502/6510. And I’ve never been a hardware hacker at more than the most trivial swap-the-video-cards level. But I did have a huge amount of Commodore 64 lore internalised. I knew which memory location always held the scan-code of the key that was pressed at that time; and where the screen memory-map began; and which locations to POKE to play different pitches on the various channels of sound, or to change the screen or border colours. I knew hundreds or thousands of those little bits of information, as well as being completely familiar with the horrible BASIC dialect that was in one of the ROMs. In short, I knew the machine in a way that I don’t even begin to hope to know any of my computers today; in a way that, I am guessing, no-one anywhere in the world knows their machines.

I miss that.

I know exactly what he means.

Long, nostalgic ramble after the break. Consider yourself warned.
Continue reading “Commodore Nostalgia”

“B’Bye”

A couple of years ago, links this article went round the office as an example of how bad Vista was, and how not to design software. It didn’t sit well with me.

Anyway, I ran into it today and re-read it, and this particular point stood out:

So now we’ve got exactly one log off button left. Call it “b’bye”. When you click b’bye, the screen is locked and any RAM that hasn’t already been copied out to flash is written. You can log back on, or anyone else can log on and get their own session, or you can unplug the whole computer.

…as the culmination of his whole argument. To me, in context, it just reads as a “reductio ad absurdum” against the very showing why Microsoft did the RIGHT thing in making a flexible UI.

Then again, I am at least a sigma, and maybe two, into the “control, customizability and flexibility freak” side of things when it comes to computers. I run Gentoo Linux on my server, and if I pitched Windows on my day to day machines, it would be for Gentoo (or some other very customizable Linux distro) and not for something more out of the box like Fedora or SuSE (let alone the MacOS!)

The REALLY interesting question, to my mind, is how do you design an interface that scales in depth – to be accessible enough for someone newly sitting down at a system to be able to use it while at the same time allowing an experienced user to optimize his or her own processes – for one trivial example, I don’t want to have to pull the battery in order to get a “real” shutdown or hibernate of my laptop before a flight or a long day away from it: how long it’s going to be before I need it again is something that the software isn’t going to know, but I’ll usually have a pretty good guess of when I shut down.

As these things go, I’ve found Microsoft’s “big” products (Windows and Office) to be some of the better software out there in that respect, although I haven’t needed to play around nearly as much with Office customization since I moved to Office 2007. Vista and Windows 7 were (IMO) HUGE UI improvements over 2000/XP in my view.

Server upgrade

I doubt many folks are still reading it, as I know my handful of old friends who read regularly are all on Facebook now and seeing my updates there. Nevertheless, my file/web server has been down for a week or two and is only back up. It’s pretty much been totally replaced, hardware-wise.

Specs (aka Geek porn) after the break. Photo (at Aveek’s request) to be provided in a forthcoming update.
Continue reading “Server upgrade”

Someone with a web server and a sense of humor…

Ebuyer.com runs on a Commodore 64

Online retailing can be a rough sport. The competition is rabid, customer loyalty is fickle, and IT expenses can go through the roof.

That’s why The Register can appreciate an e-tailer with a unique business model.

A hawk-eyed El Reg reader points out that UK online retailer Ebuyer.com appears to be cutting costs by running its site on servers dating back to the late Cretaceous period – roughly speaking. According to internet monitoring company Netcraft, the e-tailer has bypassed run-of-the-mill legacy servers for some serious heirlooms.

[…]

Next, you’ll find not one but two Commodore 64s. The Commodore debuted in 1982 with 64KB RAM, a 1.02MHz MOS Technology 6510 processor, and a 16-color, 320×200 resolution monitor. Not to mention a creamy BASIC 2.0 operating system.