HNHacker News
TopNewBestAskShowJobs

jim_lawless

435 karma · joined February 1, 2009

Home page / blog : https://jimlawless.net

The Stray Pointers Podcast : https://straypointers.com

Github : https://github.com/jimlawless

Retrocomputing site : https://jumptable.net

submissionscomments
jim_lawless··on Ask HN: What 1980s/90s-era shareware did you purchase?
mIRC, a windows .HLP authoring tool, an animated GIF HTML button generator, a graphics DLL for Windows. I think I might've licensed a QWK Mail reader for BBS use as well.

I also sold a few shareware apps in the late 90's and early 2000's. Mostly command-line email and/or command-line something-or-other utilities.

jim_lawless··on MakeMake: Generate make files from C source code
We had purchased a commercial MS-DOS utility with the exact same name back in the early 90's. It was reasonably priced ... I think it was $50 at the time. It successfully untangled the dependency chain in our code allowing for more optimal build times.
jim_lawless··on How did people deal with punch cards?
In the Fall months of 1984 and the early months of 1985, I was in a tech school area of study that required us to punch the input source code for mainframe COBOL and Assembler programs. We also had a Prime mini in the lab with monochrome terminals. We used BASIC on the Prime as kind of an intro language, but they were pretty strict about learning about punched cards because some businesses in the area were still using them.

We would punch up a program along with a few Job Control cards and we'd place them in trays in the computer lab. About once every ten or fifteen minutes, a computer operator would stop into the lab. They'd gather the rubber-banded decks of cards. Then, they'd submit them for compile/execution. They would also deliver output printed on greenbar paper from the prior run. The instructors would grade on what should be a "clean" greenbar listing ( good compile and no runtime errors. ) They could still catch logic problems and such by reading the code, though.

When the card decks were left alone in the trays, some of the jokers I went to school with would punch up COBOL and/or Assembler comment cards with crude jokes on them and they'd insert them in peoples' decks to see if the instructors caught eye on them when grading the greenbar listing. Something like:

      * HEY, PROFESSOR SMITH.. YOU'RE CUTE!
When the system got busy ... like during finals ... you might only be able to get one compile/run in per day.

Using the keypunch machines was difficult. The print mechanisms didn't always work on the ones we had, so you couldn't always see what you were typing.

One of the students did have an unusually large program punched on cards and they dropped the deck in the hallway. They didn't have sequence numbers punched on the right edge so sorters couldn't be used. A group of us each took some pages of the last printed greenbar listing and a pile of the cards and we'd put together what we could ... trading the cards out to others like we were each solving little puzzles. I'm pretty sure that we got the program back together.

Not only did many of us have 8-bit micros at home where we could dash off programs in BASIC quickly, all of us were required to take BASIC on the Prime minicomputer ... so everyone knew that there was a better way. At the end of that first year, we got to use 3270-ish monochrome terminals which were much better. We could submit our jobs directly then, but we still had to wait for the greenbar delivery to find out the fate of our compile/run for batch jobs.

jim_lawless··on Ask HN: Could you share your personal blog here?
https://jiml.us/

Subjects: tech, retrocomputing, retro pop culture, radio, interviews, books, comics, TV, music, movies ...etc.

For the record, it's all static content. It's generated using Hugo.

jim_lawless··on A Case of the MUMPS (2007)
I knew of a financial system running on a DEC VAX some years ago that used MUMPS. I also know a programmer who had been employed at a local telemarketing company in the 1990's. That company used MUMPS.

He had said that they had their star-programmer there who could dash out complicated MUMPS data queries in very short order. My friend said he had some fun programming in it, but he left the telemarketing company to move on to more conventional programming languages.

jim_lawless··on Ask HN: Most interesting tech you built for just yourself?
I wrote a set of Python/PIL scripts to arrange image collages for print calendars, web backgrounds, ...etc. In one particular script I use to build backgrounds, the images remain the same height but they can be different widths. The images built are seamless. Here's an example of some comic book covers in a collage using one of these scripts:

https://jiml.us/bp/

jim_lawless··on The Golden Age of BASIC (2014)
I liked BASIC not so much because of any particular programming constructs. I liked the large, varied community that formed around BASIC. All sorts of people were dabbling with BASIC at the time trying to code games, utilities, or maybe just noodling with graphics and sound as the potential of the 8-bit home computers was explored.
jim_lawless··on Ask HN: What are some of the best podcasts for developers?
Seconded. There's a lot of good listening in the archives in addition to the new episodes. One of my favorites is an old interview with Anders Hejlsberg that includes discussions of Turbo Pascal, Delphi, C# and LINQ.

https://www.se-radio.net/2008/05/episode-97-interview-anders...

jim_lawless··on Ask HN: What weird technical scene are you fond/part of?
Scripted image manipulation: I wrote a script that builds seamless background images out of sets of smaller images, kind of like contact sheets. This started for a comic book themed web site so that the background image could be a collage of comic covers with a special theme ( Christmas, celebration of a comic artist, ...etc. ) I am still cultivating the script so that it'll be friendly enough for public use. I'll place it on Github when that happens.

Little Languages: I like to tinker with my own compilers / interpreters. I had read an article recently about someone building an example Linux shell and I wanted to try a couple of ideas where I thought I'd take a different approach than the author. I ended up building a very, very tiny BASIC interpreter in C. My proof that the interpreter was "good enough" was whether or not I could write a script in the dialect of BASIC to display the lyrics to the song "The Twelve Days of Christmas."

https://github.com/jimlawless/lazybasic

jim_lawless··on Ask HN: What is the most impactful thing you've built?
Some things I built on the side, outside of my day job:

In the late 90's, I sold a command-line SMTP e-mailer for Windows. It was easy enough for folks to integrate e-mail transmission into their systems ... even 16-bit systems since spawning a copy of the shell would allow 16-bit systems to invoke my 32-bit mailer. Lots of folks had used these tools for all sorts of things. I got registration checks and cash from around the world before I started taking credit card payments.

I have an open source command-line MP3 player for Windows that folks still use and incorporate into their systems, JS libraries for node.js, ...etc.

https://github.com/jimlawless/cmdmp3

jim_lawless··on The History of FoxPro: Interview with Wayne Ratliff (1986)
I was confused by this too.

The blog is called The History of FoxPro. The Ratliff interview is just one post of a number in the pre-history of FoxPro detailing the rise of dBase. Many of the others pertain to FoxPro.

http://www.foxprohistory.org/tableofcontents.htm

I agree with you about the FoxTales book. It was a great read.

jim_lawless··on What’s the strangest thing you ever found in a book?
I bought an old book at a used book store and I found the receipt for the original book purchase inside. The receipt had the buyer's name and credit card number clearly printed.
jim_lawless··on The Perl Journal
I used to really enjoy this magazine. There was quite a bit of diversity in the articles. I found it particularly interesting to see how Perl was being used in various endeavors.

I had an entry in issue #7 in the Obfuscated Perl contest. I took second place in the best "The Perl Journal" printed output competition.

https://www.foo.be/docs/tpj/issues/vol2_3/tpj0203-0012.html

A lot of the content from these issues was collected in the O'Reilly book Games, Diversions, and Perl Culture.

jim_lawless··on BootBASIC Interpreter in 512 Bytes
Please see SectorLisp

https://justine.lol/sectorlisp/

jim_lawless··on Mimic Systems Spartan: Apple II emulator for the C-64
Commodore sold a version of CP/M (2.2) with a Z-80 processor in a cartridge for the C-64. Due to slow 1541 disk drive speed, non-CP/M disk format, and a 40-column display, it was a slow and clumsy version of CP/M.

As someone else posted, the C-128 and 1571 disk drive had much better CP/M support. The 128 had a built-in Z-80 and 80-column capability. The 1571 could read/write CP/M format (and MS-DOS format for that matter) disks.

jim_lawless··on The Power C Compiler
I used to teach C Programming using the Power C compiler at a local community college. It was a nice enough compiler that the students then owned so that they could continue to experiment and learn.

I found a couple of things to not ring true in what I'd read about the compiler, though. There were issues around a lack of error messages when students would send incorrect parameters to a function. If I remember correctly, I think that one could transpose the arguments in a call to fprintf() so that the FILE * reference was not the first parameter. A few of my students put a format string at the front, a few parameters, and then the FILE *. I believe that the version of Power C that we were using did not flag this as invalid. I question the ANSI compliance claim because of this and a couple other odd issues.

The other thing that didn't really ring true was the often-quoted line about loving the book and throwing away the compiler. Really, the book wasn't that great, in my opinion.

I do believe that one received more than their $20 worth of value from the offering, though. It was a nice enough compiler with a decent book.

jim_lawless··on Ask HN: Have you created programs for only your personal use?
Yes. There are far too many to mention all of them, but here are some that are probably among the more recent.

Windows clipboard capture to file tool. Any new image placed on the clipboard is written to a sequentially-numbered file so that I can just hit various Print-Screen key combinations or I can right click an image in a browser and click Copy to capture it.

Python / PIL scripts to arrange directories of images into seamlessly connected wallpaper images.

Lots of email automation scripts, both sending and receiving. ( Pruning spam, marking all of my unread messages read, sending alerts for blog post updates. )

Scripts to convert filenames to all lowercase in a folder.

Startup scripts that forcibly turn off Windows options that I don't want because Windows update sometimes re-enables these.

Python/Bash + Cheese - Poor man's security system. I used an old netbook with the camera pointed at the inside door of a house I used to own take a picture of the door area and send it to me via email so that I could monitor to see if anyone had been inside while I was gone for an overnight trip.

Custom RSS aggregator scripts ... sends results to me in email so that I keep a record of the articles by day.

...etc., ...etc.

jim_lawless··on Some tiny personal programs I've written
I wrote a command-line MP3 player in C for Windows. I just wanted to play with the media manger API's, but I've ended up using this to play MP3's in succession via a script.

https://github.com/jimlawless/cmdmp3

It doesn't work on all versions of Windows ... it depends on some configuration elements. This has been used in another developer's video game and I believe it's installed with an MP3 player library in node.js ( if you're running node.js under Windows. ) It also plays WAV files on Windows 10 (possibly 11) if you pass the name of a WAV file into the command-line.

I needed a command-line emailer that would send an email via Gmail with a very simple one-line body for my Mac. I also wanted to exercise Go's SMTP libraries while experimenting with trying to build a minimal emailer application.

https://github.com/jimlawless/gsend

I use this regularly. I used to use it on MacOS, but I use it more frequently on Windows.

jim_lawless··on Ask HN: How can I make a “kid's computer” today as good as an Apple II?
I'm not sure about finding a computer that would both meet your idea of a fun machine and meet the aesthetics that they might be used to of modern computer systems.

Have you thought about introducing them to something where they could code/create online and could share their work? You might want to take a look at the online free Logo system at:

http://www.logointerpreter.com/

They would be able to click on the works others have published there and they could tweak the code to do other things.

jim_lawless··on BCHS: OpenBSD, C, httpd and SQLite web stack
It's not just the start-up and shut-down costs. A CGI process might need to attain connections to databases or other resources that could be pooled and re-used if the process didn't completely terminate.

You might want to look at using FastCGI:

https://en.wikipedia.org/wiki/FastCGI

Basically, the CGI processes stay alive and the servers supporting FastCGI ( like Apache and nginx ) communicate with an existing FastCGI process that's waiting for more work, if available.

jim_lawless··on Ask HN: How do you deal with the powerlessness feeling of coding?
Without seeing any of your code, what I've written below can be considered wild speculation.

I've experienced this kind of page-reload relating to buttons that are of type SUBMIT and no specific ACTION is specified in the FORM tag. Sometimes, the default SUBMIT behavior triggers earlier than an attached Onclick() handler. If there's no ACTION, it reloads the same page.

You might try adding the following attribute to the FORM element:

ACTION="javascript:void(0);"

This should prevent the form from SUBMITting to itself. The job to submit the form then relies on JavaScript code in an event handler to submit the request properly.

You also might try switching the type to BUTTON if you just want to attach an Onclick() handler to it.

jim_lawless··on The Further Text Adventures of Scott Adams
Scott, I am curious about the genesis of your game language interpreter. Did you have a background in building interpreters / compilers before going in this direction?
jim_lawless··on Programming in Forth on Commodore 64 [video]
There were C and Pascal compilers in the $50 - $60 price range for the C64, but they were often time consuming to use. The process of editing a source file, saving it, loading a compiler, compiling it to find errors, then re-loading the editor was tedious with a stock 1541 disk drive. ( Some editors had syntax-checkers built in to avoid having to exit the editor to find simple mistakes ... others used the BASIC editor to enter source with BASIC line-numbers. )

For me, tinkering with Forth on a C64 was attractive because I could interact quickly with the compiler, getting immediate feedback when I was toying with different concepts.

jim_lawless··on The Simtel.net MS-DOS Collection
I had published a shareware program called Envy (August of 2000) in the batchutl section here:

https://ftp.sunet.se/mirror/archive/ftp.sunet.se/pub/simteln...

(envy100.zip)

It was a program that provided 37 or so extension functions for batch scripts. Many of them that performed an expression evaluation left a result value in the environment of the parent process. Details and source code can be found in this old blog post:

https://www.mailsend-online.com/blog/envy.html

This really takes me back.

jim_lawless··on The first appearance of a real computer in a comic book
Some comics used to try to pass off source code ... often BASIC ... as programs on the screens of the computers in the story's. I had seen a couple of these instances in Jim Starlin's "Dreadstar" comic. One of them was a printer dump routine from 80 Micro magazine for a TRS-80 that included the original author's contact info on the screen:

https://jiml.us/i/dreadstar-basic.jpg

jim_lawless··on The Computer Chronicles (1983 – 2002)
This presentation by Stewart Cheifet from the 2018 Tandy Assembly (TRS-80 enthusiasts conference) included some interesting information about the genesis and life of the Computer Chronicles TV show:

https://www.youtube.com/watch?v=iIf6leAPaEM

(He states that there's a connection between his trying to get funding for the show and a famous TV ad.)

jim_lawless··on Ask HN: What's your worst undefined C story?
In the late 80's, two of my fellow C programmers and I thought that we might want to embed a copyright string into all of our executable programs that comprised a system that we were building. These were 16-bit MS-DOS programs. It seemed like an innocuous idea.

Each C program in our system included a header file with a few globals that looked something like this:

    char *dave="Copyright ... blah, blah";
    char *bob="More magic and mirth from the mavericks in MicroDev";
    char *jim="CAPS Sucks!";
The system we were replacing was written in a proprietary programming language called CAPS that was a royal pain to work with.

A decade or so later, after we had moved on to other projects and other companies, one of the old users called me. They were using the system to board a customer and in the printed paperwork that the system generated the words "CAPS Sucks!" showed up! They caught the error before sending the paperwork to the new customer, manually correcting it.

I talked with a new programmer overseeing the system. They eventually found the bug in some code they'd added that caused a pointer to go astray which ended up pointing to constants in early portions of memory ( early because those three strings were in the first #include file in the set.) Why it skipped over the first two strings, I'll never know for sure.

jim_lawless··on Before Netscape: Web browsers of the early 1990s (2011)
I first used SPRY Mosaic as provided by CompuServe (my first ISP). I had written an article for a late 1995 special edition of Doctor Dobbs Journal which still has my screen image captures of the SPRY Mosaic browser:

http://www.drdobbs.com/web-development/clientserver-developm...

jim_lawless··on Which programming language is used for making Windows 10?
"The Microsoft NT 4.0 kernel network driver contained a small Prolog interpreter to help puzzle out network interface cards"

Using Prolog in Windows NT Network Configuration

http://web.archive.org/web/20040603192757/research.microsoft...

jim_lawless··on BASIC Computer Games
You're thinking of zero page ($0000-$00ff), not the stack $0100-$01FF).
← PreviousPage 2 of 5Next →