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

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.

Chili, a questionable success

This blog is pretty much dead, but I use it as a notepad mostly for recipes these days. If you like any of these, feel free to reuse them, and consider sending me a shout out on my twitter @nkedel

This came out really thick, and perhaps a bit too salty – unsure what to do to fix the salty, but the thick is an easy fix. Otherwise, it was really good.

Finely chop 1 large onion (maybe 1 1/2 if upping the amount of beef)

Peel a couple of chunks of garlic

One 2oz package Pasilla-Ancho dried chiles, with stems and seeds removed
– toast, then break up into moderate sized pieces
– put in food processor

mix 1tsp baking soda and 1 (or 2) pounds of ground beef thoroughly, set aside approx 15 minutes

Add spices:
– 1/2 tsp each spicy ones: chipotle powder, ancho powder, smoked paprika, cayenne [came out spicy, don’t double]
– 1/2 tsp functional ones: MSG, sodium citrate [don’t double]
– 1 tsp: celery seeds [or powder], dried oregano [new this time, was a win]
– 2 tsp black pepper [don’t double]
– 1/2 tbsp each: garlic powder, onion powder, cumin [double w/ 2lbs meat]
– 1 tbsp: chile california powder, sweet paprika, coriander [probably leave the same]
– 1 tbsp: cornmeal

Run all of the above in food processor until a uniform fine powder.

drain and puree 1 jar of roasted red peppers, set aside

Use an oven safe kettle or dutch oven

Preheat oven to 375f

2tbsp olive oil in pan (3tbsp if 1 1/2 onions)

Dump in onions

Cook onions until glassy

Add garlic via press

Add ground beef, brown

When browned, add spice mix, stir in

Immediately add pureed red pepper and mix

add 1 can tomato paste, and mix

add 1 can fire-roasted diced tomatoes, and mix

[if doing 2lbs beef, next time add a 2nd can crushed tomatoes or pureed diced ]

add one can of black beans, including liquids [don’t double – look for low sodium next time if you can find it]

add 1tbsp molasses, 1tbsp soy sauce, 1tsp worchestershire, 1tbsp beef base [low sodium if possible]

add low-sodium beef broth around 16oz [or maybe 12oz dark beer + 4oz of broth?]

Stir until uniform, then cover and put in oven

Bake for ~90-120 minutes, removing to check for separation and stirring every 30 min or so. Add liquid if it starts having an overly thick texture, should be stew like not casserole.

A breadmaking success

200ml room-temperature water
200g bread flour (gold medal; am out of King Arthur)
1/4 tsp breadmaker yeast
Run on dough cycle without pre-warm
(next time try sourdough starter cycle)

~3 hours ferment including the rise part of the dough cycle

120ml tap-cold water (try warm next time)
200g bread flour
100g white whole wheat flour
25g gluten (original recipe called for rye flour)
1 1/2tsp salt
1/2 tsp sugar (try slightly more next time)
1/2tsp yeast
Run on basic white cycle, without pre-warm
(next time, use pre-warm)

Macaroni and Cheese proportions

I’ve been making Macaroni and Cheese to roughly the same recipe of my mom’s since high school, and the result have been inconsistent. I tried making a creamier and less caserole-y version for Nadia compared to my usual-of-late proportions, and I thought I’d record it here.

I realized I had recorded one set of proportions here in the past and it looks like the proportions are almost exactly doubled:

  • 3 1/2 cups shredded cheese, plus extra for crust for baked portion (mixing some in and then crust) – inexact as was using the ends of multiple pregrated sharp cheddar; about a cup was jack
  • 2 1/2 cups milk, preheat to hot in the microwave
  • Roux: 4 tbsp each butter and flour; mix together over low heat until a paste forms
  • Add black pepper (one turn of pepper grinder) and MSG (1/2 tsp) to taste
  • Add milk slowly, no faster than will mix in thoroughly with a flat-bottom whisk; this seems to be the main trick, as adding too much milk at once will lead to the roux clumping together
  • When all of the milk is added, add 1tsp sodium citrate (optional, but makes for a smoother texture) and stir in evenly
  • Add cheese slowly stirring, until thoroughly melted
  • Cook pasta. This was 3 heaping cups of cellentani (ridged, corkscrew macaroni which ends up a bit less dense), a bit more than 3/4 of a box. I think for shells or smaller elbows 3 cups might be a bit much
  • Drain pasta, put in a 8×8 or 9×9 glass baking tray
  • mix in some extra cheese, cover top loosely with extra cheese
  • Bake at 375f (coincidental; we’d had a take-and-bake bread in while the pasta was cooking), checking after 20 minutes, until cheese on top just starts to brown.

Spelunking my own blog

One of the odd things about having kept this up for ~15 years is that there is plenty of old stuff I don’t remember it all, like: https://www.cubiclehermit.com/archives/482

For the record.

I do not now, and I have never owned an iPod or Zune.

I’ve owned three MP3 players:
[….]
I keep hoping that battery life on my PDA/phones will improve to the point where it will not be necessary to have a separate MP3 player. Sadly, I see little improvement there, and my present phone (a new HTC Touch Pro) is something of a step backwards for music player use as they went from a semi-proprietary small headset plug to an entirely proprietary USB+sound+etc plug.

(Lest the basic reference not make sense)
For the record, I do not now, and have never owned any Apple iDevices, nor any Intel Macs, nor any Microsoft portable consumer electronics (although I’ve had and have had a few keyboards, mice, and 3 generations of XBox [edit late 2021: 4].)

For that worth, it basically be be about another ~2 years before I got a phone that could “just work” as an MP3 player with adequate battery life. The HTC Touch Pro got replaced with a “Sprint Epic” (a 1st-gen Galaxy S with a slider keyboard) which also brought back proper headphone jacks.

(I’ve yet to succumb to a headphone-jack-less phone in the return of such things, but it seems close to inevitable… 🙁 )

Oh, and the dead WSJ link there seems to refer to this: https://www.networkworld.com/article/2270831/zunegate–is-obama-an-ipresident-or-not-.html

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.

Java vs. C, a totally unscientific microbenchmark

Java vs. C — inspired by an interview question, I wrote a little bit of sample code to create an array of a billion random integers, and either (A) take the sums as I go, or (B) go back over and sum it on a second pass.

In C (cygwin, gcc 6.4.0 64-bit):
– summing as I go, about 3.7 seconds on my laptop, -O3 doesn’t make much difference
– two passes, about 6.5 seconds unoptimized, about 4.1 seconds with -O3
– time to malloc(sizeof(int) * 1000000000) < 1ms

In Java (jdk 10):
– summing as I go, about 12.1 seconds
– two passes, about 13.4 seconds
– time to new int[1_000_000_000] about 1.7 seconds

So Java sucks, right?

Replaced random integer with consecutive integers, all in two passes:
Java : 2.7s
Unoptimized C: 6.1s
C at -O3: 2.1s

Given how much of that time is the equivalent of malloc in Java zeroing the memory, that’s pretty impressively fast.

So the real issue seems to be that Random.java is WAYYYY slower than rand()?

Some presidential age trivia.

Last year, I posted this on my feed on Facebook; since that’s friends-only, I thought I’d repost it here on the anniversary of this rather regrettable milestone.

As most folks know, Trump is the oldest President at his inauguration, beating out Reagan by about 8 months (Reagan was not quite 70, Trump almost 71).

What others may not have realized is he’s also an exceptional President in other ways:
* He’s the first time a third President has been born in the same year (with Clinton and Bush Jr, all three born in 1946)
* He’s the oldest jump from his predecessor both at age at his inauguration, but also in age inauguration-to-inauguration.

More presidential age trivia
Continue reading “Some presidential age trivia.”

JVM performance over time

Out of curiosity, I decided to run some quick (and non-repeated, largely unscientific) benchmarks of a Gentoo (-march=native,etc etc) OpenJDK/IcedTea build vs. actual Sun/Oracle JVM builds. Interestingly, the Gentoo builds are slower. Unsurprisingly, the JVM gets noticeably faster across versions from 1.6->1.7->1.8

Continue reading “JVM performance over time”

Another brief bit of fiction

OK, so I ran into my old web page from 1995. BOY was I callow as a 19 year old, although I suppose it’s a tautology to say so. Still, I ran into a few cool things I wrote when even younger than that… which I’ll be sharing here. First up, written in 9th grade, for a class project, I give you:

Little Red Riding Hood, as told by Holden Caufield
(actual text below the break; warning for those bothered by it, some mild profanity.)
Continue reading “Another brief bit of fiction”

A new animal to be afraid of? When sea lions attack…

Interesting article in The Guardian:

Experience: I was nearly drowned by a sea lion

What Trish hadn’t seen was that at the moment she said “Smile!” a sea lion had leapt about 7ft out of the water to get the fish, and grabbed my left hand in the process. Sea lions have canine teeth, just like a dog. It dragged me headfirst into the water. I’d actually seen it out of the corner of my eye a split second before I felt the pain. It was big and had such strength. It pulled me straight down to the bottom of the bay, about 25-30ft.
< ...>
Sea lions are so agile. I don’t buy the idea that it accidentally got my hand; I think it was angry and territorial. The supply of fish here is dwindling and their numbers are increasing – there’s not enough food for them all.

Quite a bit more there. Go read it, amazing survival and interesting incident for an animal many of us think of as “cute.”

Pity Colbert isn’t back on the air yet. I’d love to see his take on it.