Ask Slashdot: What Are Some Things That Every Hacker Once Knew? (ibiblio.org)
Open source guru Eric Raymond turns 60 this year, prompting this question from an anonymous reader:
Eric Raymond's newest writing project is "Things Every Hacker Once Knew," inspired by the day he learned that not every programmer today's knows the bit structure of ASCII. "I didn't write it as a nostalgia trip -- I don't miss underpowered computers, primitive tools, and tiny low-resolution displays... In any kind of craft or profession, I think knowing the way things used to be done, and the issues those who came before you struggled with, is quite properly a source of pride and wisdom. It gives you a useful kind of perspective on today's challenges."
He writes later that it's to "assist retrospective understanding by younger hackers so they can make sense of the fossils and survivals still embedded in current technology." It's focusing on ASCII and "related technologies" like hardware terminals, modems and RS-232. ("This is lore that was at one time near-universal and is no longer.") Sections include "UUCP and BBSes, the forgotten pre-Internets" and "The strange afterlife of the Hayes smartmodem" (which points out some AT commands survived to this day in smartphones). He requests any would-be contributors to remember that "I'm trying to describe common knowledge at the time." This got my thinking -- what are some that every programmer once knew that have since been forgotten by newer generations of programmers?
Eric Raymond is still hard at work today on the NTPsec project -- a secure, hardened, and improved implementation of Network Time Protocol -- and he promises donations to his Patreon page will help fund it. But what things do you remember that were commonplace knowledge "back in the day" that have now become largely forgotten? Leave your best answers in the comments. What are some things that every hacker once knew?
He writes later that it's to "assist retrospective understanding by younger hackers so they can make sense of the fossils and survivals still embedded in current technology." It's focusing on ASCII and "related technologies" like hardware terminals, modems and RS-232. ("This is lore that was at one time near-universal and is no longer.") Sections include "UUCP and BBSes, the forgotten pre-Internets" and "The strange afterlife of the Hayes smartmodem" (which points out some AT commands survived to this day in smartphones). He requests any would-be contributors to remember that "I'm trying to describe common knowledge at the time." This got my thinking -- what are some that every programmer once knew that have since been forgotten by newer generations of programmers?
Eric Raymond is still hard at work today on the NTPsec project -- a secure, hardened, and improved implementation of Network Time Protocol -- and he promises donations to his Patreon page will help fund it. But what things do you remember that were commonplace knowledge "back in the day" that have now become largely forgotten? Leave your best answers in the comments. What are some things that every hacker once knew?
Use the -d flag with pkunzip, otherwise, you might end up with a big stinking mess.
Watch Casey Muratori's Handmade Hero, where he codes a game live on Twitch from scratch with no 3rd party libraries.
His entire effort is fueled by his desire to educate the next generation of developers with an understanding of how computers *actually* work, which is something he feels is both important and has been lost.
https://handmadehero.org/
Stick a hot soldering iron through the upper-left hand corner of your 720K floppy and now you've doubled the capacity.
how to program! haha.... sorry, I could not resist. One thing that comes to mind is using bitwise operators to speed up "complicated" math operations on older hardware.
Example: shifting the bits to the left or right to multiply or divide by two
Specifically, EBCDIC-ASCII tables.
They sentenced me to twenty years of boredom
on 65xx CPU
Yeah I know thats over 35 years ago - most of you weren't even born
debug
- g=c800:5
- g=ca00:5
- g=cc00:5
- g=ce00:5
That linen-bound brown book in the slipcover. That's where you go for the ASCII chart. :)
RS232 an null-modems are mentioned in TFA, but I'd like to add a detail:
Most of the more hackerish students where I went (ca 1990) knew the minimal pinout for a null-modem by heart so we could improvise one with 3 wires and matches/paperclips/whatever. By the time we graduated LANs and to some degree internet mane that knowledge obsolete, but it sure did save the day a few times, typically for transferring files between different platforms with different floppy formatting.
sudo ergo sum
repetitively assure a V.32bis connection was to use a US Robotics modem and all the cloned softmodems were garbage.
09 F9 11 02 9D 74 E3 5B - D8 41 56 C5 63 56 88 C0 45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
Hexadecimal: what it is, why it is and how & why it evolved from octal.
That, and why real computer scientists often confuse Halloween w/ Christmas: 31 Oct = 25 Dec.
Error: NSE - No Signature Error
Only had a chance with Zmodem.
09 F9 11 02 9D 74 E3 5B - D8 41 56 C5 63 56 88 C0 45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
copyiipc a: b:
(Yes, they existed - especially in the mid-1980s) all knew:
- Interrupt 18 to force a reboot
- The memory range which was set aside for the display, and which you had to write to in order to do graphics (non-hackers used libraries but hackers mostly went for embedded assembler to try and squeeze a little more speed out for graphics work)
- The hex number for every one of the 16 colors a CGA display could show (Sierra Online took it a step further in the AGI engine and invented an early precursor of the scene-bumpmap which allowed their pseudo-3D adventure games to work by using a map-image where depth was indicated by color allowing characters to walk in front or behind objects). Unlike a true bumpmap it didn't specify height for lighting, it specified distance from the screen for movement. It allowed the Y axis to double as a Z axis
- How to read/write from the parallel port
- How to write to the PC-speaker's memory address to play sounds
- How to access extended memory
All things that went by the wayside when Unix and Win32 became available on the PC platform, acting like you are root all the time became frowned upon, libraries became the normal way of doing things, memory wasn't artificially limited to 640K. Some of the legacies of this era lived on rather longer than you'd think. As late as the early 2000's the best way to run most games on Linux was still using SVGALib - which wrote directly to video memory and didn't require resources for X, but in an age before the DRM driver in the kernel SVALib meant you had to run your game as root. I still played Quake2 that way ! The way SVGALib worked was simply a slightly larger memory region using the exact same techniques that we had used in the 1980s.
Unicode killed the ASCII-art *
I used to know a good part of the dos/pc memory map, and before that certain 8-bit micros.
And undocumented z80 and x86 opcodes.
Portmaps on all sorts of computers.
And the pc keyboard interface (you could you direct coding of the state leds for rudimentary Comms, for example).
And the undocumented, unofficial corners of the parallel port.
Tape formats for several old computers (don't ask).
ASCII... obviously.
Pinouts for most of the 74 series logic.
Pinouts for a smaller subset of the 40xx series.
Pinouts for the z80 and associated peripherals.
The 6545 crtc, including the undocumented/poorly documented parts.
The 6845 crtc (but in less detail).
CGA/EGA/VGA/XGA etc, including the unofficial modes.
The dos interrupt table.
All manner of sram pinouts and miscellaneous crap.
And a bunch of other stuff to clutter the mind.
Computers used to be a lot more fun when you had to know the details. Less powerful, less portable, but somehow much more fun.
disable interrupts for critical program paths
and rmember to enable them again after task was finished
8N1 ;^)
ATH
Acoustic Couplers
DSDD
Floppy notcher
HAM (not radio)
The Turbo button is not always your friend
Green vs Amber, the eternal war
8-bit Bucket List: TWO floppy drives!
I'm old.
The original hackers were of course Hardware Hackers. Long before software was a thing (in the hobby world).
Most were ham enthusiasts, but HiFi and RC modelling was also popular.
There was even a shop called "The Hardware Hacker" long before the term became pejorative.
What Are Some Things That Every Hacker Once Knew?
Do you mean hacker as in programmer or hacker as the media usis it to describe a digital burlgar? If you mean the former, these days it seems to be simple stuff like checking for open ports with telnet and then having fun by typing in protocol messages: http://www.shellhacks.com/en/S..., or even simpler stuff like editing documents with vi and using command line programming tools. These used to be things that every programmer knew, I learned this in school but many of our new recruits seem to be totally unaware of this stuff. I've written programs tens of thousands of lines long with nothing but vi, gcc/g++, make, tcpdump+Wireshark, valgrind, vi and a few other choice commandline monsters but these days the GUI generation seems to need a GUI editor, preferably a GUI IDE, a GUI networking tool, a GUI debugger, etc... to do simple stuff. I don't usually even need a debugger, I can normally figure out what is wrong without one. A few years ago I was handed a .NET assignment. After much complainign and whining (Unix guy through and through) I coded it up using that primitive little Windows CMD terminal, a freely available .NET compiler and vi/make before the IT department got around to installing Visual Studio. The really funny thing was that even some seasoned .NET developers were surprised to see you could (a) run vi/make and other GNU tools on Windows and (b) compile .NET code from the command line: https://msdn.microsoft.com/en-.... BTW, and this is probably heresy around here, but I really like how Microsoft seems to have a well documented API for everything as long as you are willing to bother learning .NET or Visual Basic.
The "control characters" have their own special position in ASCII, as the codes below the space character: 0x00 through 0x1F.
Yet, for some reason, there is one more sort-of control character outside that range: DEL, which is 0x7F. This bit of lore is actually from before my time, but I know why.
People used to actually use paper-punch machines to punch input tapes. What could you do if you mis-punched? There's no good way to fill in holes you didn't mean to punch, but you could go back and punch more holes. ASCII is a 7-bit standard and DEL is all 7 bits set. So, if you hit the wrong key on the punch, you could hit DEL and it would punch out all the rest of the holes, making 0x7F or DEL, and the paper tape reader would simply ignore any DEL characters it saw.
Oh, I guess anyone who can use Wikipedia didn't need me to find this out.
P.S. I didn't actually know why the carat notation for DEL is ^?, but Wikipedia explains that as well. Neat!
lf(1): it's like ls(1) but sorts filenames by extension, tersely
pin 5 is GND, not 1.
Please research your post *carefully* if you're going to correct someone.
Epson printer ESC codes - you embedded them in text documents and sent them to your parallel port dot-matrix printer, and they produced bold and italics and double width, and all sorts of effects.
ANSI escape screen codes - for setting foreground and background colours and other screen effects (clear screen, home) when you got bored with light grey on black.
I am anarch of all I survey.
This will get over 800+ posts, easily.
Anyone using graphics knew about palettes. In this regard today's mainstream graphics have gone backwards. You could create full screen animations by just changing the palette. You could reuse art assets by changing palettes (want a different forest? Just change the tree colors). It was incredibly efficient coding.
I recently had to convert some old palette based animations to show on a modern computer. it meant changing them to 24 bit video format. The original animation was pixel perfect, fit onto a floppy, and ran smoothly on a 386. The new animation was a hundred times bigger, and needed a computer that was a hundred times faster, with a hundred times more RAM. And the result was ugly: lossy compression meant blurred pixels and it sometimes skipped frames. It made me weep.
call -151
cat zImage > /dev/fd0
Every hacker over a certain age knows what is meant by the term "overlay", from minicomputers to CP/M to MS-DOS. And it fills them with dread to this day.
sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
were awesome necause Tandy looked better than the PCClones. They. yended to be passive cooled processors and thuds quieterr as compares to the bulky beige PC/Clone.
The 950 prefix.
Where I went to college, there were dumb terminals hooked up to serial lines in various locations around campus. Students would take turns using them. (They're all gone now... everyone has their own computers and it's all WiFi and/or Ethernet now.)
When you logged in to any campus computer, the very first thing it would do was print a cryptic prompt: term? [vt100]
This was your one opportunity to correctly enter a terse code that described the terminal you happened to be using. Terminals were not cheap, and nobody was going to throw away old ones when new ones were bought, so the campus had a mix of terminal types. It would have been nice if there had been a universal standard way to interrogate a terminal to find out its type (some reserved escape sequence) but there wasn't, so it was up to you to enter it correctly.
So every terminal had a little slip of paper on it saying something like: TERMINAL TYPE: vt100
There was always a default, which you would get if you just hit the Enter key. I cheated in the above examples and put vt100 but I think the default was something else; VT-100 terminals were not actually common (I think I only ever saw one!). I no longer remember what was common, just whatever they happened to buy a lot of.
If you got it right, then the system used termcap to look up the capabilities of your terminal, and it would know how to use the cursor-movement features of your terminal. In short, you could run programs like vi and emacs. If you got it wrong, and then tried to run vi and emacs, your screen would become horrible hash quickly. What on one terminal would move the cursor around might be meaningless on another terminal or might have some different effect. (Imagine if the "move cursor to X,Y" command one one terminal was "clear to end of line from position X,Y" on another brand of terminal. That sort of wackiness.)
So the two bits of lore that every computer-using student at my college needed to know: how to correctly enter the terminal type, and how to fix it if you entered it incorrectly. (Best to just stop what you were trying to do and logout!)
But here's the punchline of the above lore:
Computer geeks like me used the terminals all the time. People who had to do statistics work also used them a lot, but some students rarely used them. For some students, the only times they used a terminal was once per quarter, to sign up for classes for the new quarter.
When I started at college, this was easy. You got a paper printed class catalog booklet, you would look up the course numbers of the courses you wanted to take, and from any terminal you would login to a special account. A program would run, reading standard input and writing standard output, and it would prompt you to enter your student ID number and the course numbers. After you entered each number, you would be prompted: Is this correct? yes/no and you would answer. Simple. I don't think it even bothered to prompt for terminal type, and even if it did, it didn't use it for anything.
But then some computer science grad students went ahead and improved the system. They added browsable menus. You could use the arrow keys to browse through, drill down, find your course and pick it. You didn't need a paper catalog of course numbers! But now you actually needed to enter the terminal type correctly. All the students who rarely used the terminals had no clue what term? [vt100] meant, and usually just hit Enter, and then they were hosed.
I'm sure now it's all web forms: no need to print paper booklets, and nobody has any serious problems using it. Not all the old ways were better.
P.S. The campus had a couple of ADM-3A terminals, and I used them from time to time if nothing better was available. They had no dedicated cursor arrow keys, but had arrows printed on H J K L pointing left, down, up, and ri
lf(1): it's like ls(1) but sorts filenames by extension, tersely
9600,8,N,1,XON/XOFF
DB9:pins 2/3/5
DB25: pins 2/3/7
My ism, it's full of beliefs.
Fun way to build mini utilities without a compiler. .exe patcher by only using debug utility available since DOS and Win32 up to Win7.
Build an encryption/decryption program, a worm, a virus, an
Knowlege of x86 assembler and memory management is a prerequisite before you can do such feat.
Many young coders don't know that you can directly talk to an email server and have it deliver an email just using human readable commands over a TCP connection. HTTP and many of the older protocols work fine just using netcat.
The security implications these youngsters miss should keep everyone awake at night.
I'm seeing a plethora of 6, 5 and even 4 digit userids post here for this one. Good to see we ain't dead yet...
WDD1100 jumpers, ABit dual CPU mobos w/ peltior plates.
My Yellow card, Abend Aid was an amazing help when looking at 40Meg bal360 dumps.
Trips over to the data center to nail down the last couple slashes for some JCL
Late afternoon games of snipes on Novell 2.15 networks
Using that 3270 terminal/XT PC in my cubical farm nest - SNA and IPX/SPX
programming the Gigi keyboards to mess with others in the college computer labs
replacing miles of coax with Cat5 as a sign of the change of times.
Now I get to sit on the porch here in sunny south Georgia and chat with other old timers. TV studio eng, Packet radio guy,
and so many others. The poor kids of today don't really understand how good we had it.
Troubleshooting which device was interfering with the rest of the chain was a complete pain in the ass but you had to develop troubleshooting skills and patience.
Start with 0x00 to 0x0f (a single nibble)
(Z80 mnemonics)
ADD A,90H
DAA
ADC A, 30H
DAA
Takes 6 bytes and, uh, 7+4+7+4 cycles (sorry, a bit rusty). 0-9 are converted to 90-99 (hex), DAA (decimal adjust for addition) does nothing and carry remains unset, ADC A, 30H converts to C0-C9 (hex) and the final DAA to 30-39 (hex, ASCII "0"-"9").
If we start with A-F, the first add results in 9A to 9F (hex), DAA results in 10 to 15 (hex, with carry set), ADC A, 30H results in 41 to 46 (hex, corresponding to ASCII "A" to "F") and the final DAA does nothing.
So this matches the structure of ASCII into the opcodes of the Z80. Works in the same manner on 8080 and also 80x86.
How to design a usable GUI.
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
When you wanted to keep it real with no FPU!
5.25" single-sided floppies could be converted into double-sided disks,
by punching or cutting a marker hole in the right place.
Drilling a hole in 3.5" DD floppies would double their density to HD.
I assume this trick worked due to laws of mass production.
Yeah, I remember spending a lot of time getting my head around UUCP and uuencode. Once I did it made my life so much easier not having to have work come to a halt while a modem transferred a file or running a remote command getting the clients machine to do all the calling to save my phone bills.
uucp made a really good bridge that was really hard to hack. Setup to access an outside system via a serial line a one way UUCP out and no TCP/IP connection to certain core systems, a cracker would have to spawn a getty on the other end of a serial line to get access. Not impossible, but extremely challenging.
My ism, it's full of beliefs.
This looks right to me - I used to be a 'multimedia programmer' in 1994 using dpaint, autodesk animator, and glpro/grasp.
Loading the initial software on these kinds of systems often required setting the console switches to a specific pattern. On some of the early minicomputers the operator had to use the toggle switches to load a short binary program that would be the first stage of the boot sequence. Sometimes the next stage was loading a more complex boot code that was input from paper tape. Even with a disk attached the load sequence was power up the machine into a non-running state, toggle the low level boot into memory, load the paper tape, then press a button to start the machine. If it all went well the result was a prompt on the console TTY or VDT accompanied by a bell (TTY) or a beep (VDT).
The console switches could be read and the lights set in software. Sitting at the machine console an experienced operator could tell how busy the computer was by looking at the light pattern. In some desperate circumstances code could only be debugged by having test code that read the switches and set the lights as it ran.
In George Lukas's first full length move THX 1138 there is an IBM 7094 mainframe. It had lights that formed a grid that could hold a few letters. At one key point in the film just before the end, these lights spell the word "TILT".
Why is Snark Required?
8 bits can store +-127, 16 bits can store +-32,767 (OK: add 1 to the absolute for negative numbers). 32 bits can store +-2,000,000,000 (well, a bit more), 3600 seconds in an hour, 86400 seconds in a day.
I find that some programmers only have a hazy idea what is meant by a 32 bit or 64 bit machine. These are fundamental, but they somehow get jobs not knowing the basics.
Reading a core dump on a System 390 (running MVS / OS/390 / etc) machine.
It's 3.00 am and the program has crashed after running for 6 hours. You can't re-run it, you have to find out why it crashed, fix it, and checkpoint-restart to completion. You have until 5.00 am. Your time starts now. Oh - and it's PL/I. An infinite loop in an IMS/DB program. Be afraid.
The ONLY information you have is the core dump, the program listing (albeit with object map), the linker map, and maybe - if you're lucky - a DB dump.
Did I mention it's a program you've never seen before? Those who have seen it are recovering from the party to celebrate a week of successful running. But they're not the ones on call that week, are they?
Ah, 1984. What a year.
Serial has seen a bit of resurgence with Arduino, especially I2C & SPI. Some of the long range wireless chips act as a serial pipe, so you still need to set the mode on both ends to the same 8N1 or 7E1.
Everyone who wanted to be a hacker in 8-bit assembler used to try their mettle on rasterbars on the interrupt. And then # jsr $Ea31;
slashdot.org!gaystate.edu!goatse.cx!rob.malda
using a screwdriver. Here is how to do it: https://www.youtube.com/watch?...
Signature deleted by lameness filter.
... and spelling?
As far as I know the third and last edition of the Hackers Dictionary stams from 1996. I certainly hope that this all leads to a new and long overdue edition...
Paai
Kermit - For file transfers etc.
BBS for information exchange.
For programmers:
ASCII graphics, and using the grphic characters above 127 to make blocks, lines etc.
Dot Matrix Printers, PCL, PostScript. Now nobody knows the language of the orinter anymore. And PostScript is still in PDF and is very powerfull.
And everybody knew at least some machine language. I coded my ZX-81 using the ASCII table in the manual. It had decimal, hex, Ascii char and Z-80 Mnemonic.
PEEK and POKE was the commands used at the time.
If you look at the early years for the ioccc, you'll find a tonne of stuff that people today likely won't know.
Things like
int i=5;
i=~-~-~-i;
It works in C and Java, yet none of the Java developers here knew what the ~ did...
I'm sure if I gave them stuff like
int f1=0x0001; ... ... // do something
int f2=0x0002;
int f3=0x0004;
i=f1|f3;
if (i&&f3) {
}
they'd have a hard time wondering what it was doing any way. Mainly because you don't need to do this in Java (although it will still work).
Carriage return? Where is the carriage on your terminal? Plus 2 char unix commands and emacs were optimized for a teletype. Those keys were hard to press.
Every hacker once knew the importance of push-button phones and the "redial" button.
Pin 1 is frame ground and connects to the shield of the cable to help with noise.
Pin 7 is signal ground
In most cases they are not tied together. Or if you used 1 for your signal ground you got lots of interesting noise.
I taught myself Basic on the TRS80, and into Assembly Language, I've always been a pirate (TRS80 had very little, I was making up for it), Amiga came out and I went that route, the Basic was so bad I had to quit or toss the system, and Assembly language is what I've forgotten, I knew it at 286, more registers than I know of now.
If Allah is Satan, does that mean that Satan is Allah? And if Allah is evil, does that mean that Satan is good? All this time I've been worshipping Satan, thinking I was serving the forces of evil, WTF?!!?
Just what we need, maudlin whinging about the old days, and a reinvention of one of the few non-broken pieces of the Internet. Hooray for relevancy.
PCBoard.
DESQview.
Netware 3.12.
2x Digi AccelePort PC/8e.
4GB of warez and small army of Pioneer 6-disc changers.
Going to battle with Bell Atlantic to get > 3 lines in a residential structure.
And pocketing $80,000.00 before my freshman year in college and getting away with this massive fraud scott free.
Good times.
Lol.!! Remember that??
I still on the rare occasion open a .ZIP file and their archive comment is in there.
https://en.wikipedia.org/wiki/...
Reading code in order to detect bugs/issues because the compile/run cycle took hours. Seems to be a forgotten art now days.
"The first thing to do when you find yourself in a hole is stop digging."
init strings
modem connection sounds - and what they meant
DOS memory management
wiring pin outs for serial, parallel and Ethernet cables
null modem cables
SCSI
IPX/SPX and how to tune the daylights out of it
dip switches
jumpers
Mind you, many of the above were necessary to do things like play games with your friends. Thinking about it, I learned a lot about networking and hardware because I wanted to play games with my friends and network games were only for the brave. We would hack games that were only supposed to work at the LAN level to work online so we didn't have to haul our computers over every time we wanted to play.
The protocol, not the frog (which it was named after).
Ubi dubium ibi libertas: Where there is doubt, there is freedom.
Using sz and rz (or, and the x and y modem equivalents) to send files across the telnet (or ssh) connection. Using uudecode/uuencode to do the same.
ROT13 on usenet.
My first computer came as a bag of components that needed to be soldered to a board before the computer was operational. Early hackers were electronics geeks because there was nobody else. If you didn't have a background in electronics you weren't in the game.
I miss the days when digital communication wasn't easy and you had to be particularly motivated to be part of the community.
I am not interested in articles about life extension advancements.
Do you mean hacker as in programmer or hacker as the media usis it to describe a digital burlgar?
It's an ESR article. Eric never uses the word "hacker" in the latter sense.
Disinfect the GNU General Public Virus!
... or the reason why you can't assume alphabetic characters are any between A and Z
debug G=C800:5 to low level format a harddrive!
On the whole, I find that I prefer Slashdot posts to twitter ones because I don't get limited to 140 chars before
I'm nigh on near sixty, these are the sort of things wizards of various kinds (inc me) did. I did a fair bit of computing from 1977, but the main iron arrived in 1992.
BASIC, the kind of stuff you find in ROMBASIC and BASICA/GWBASIC, not QBASIC.
Wiring up things like cross-over cables and null modems.
Using a line-editor to edit text files (such as MS-Edlin).
Running pipes and scripts to do things.
XYZ-Wars. eg Edlin is better than Copycon
IBM Mainframe printer codes, and how to convert these into Windows or dos.
Writing to the iron in some code.
Computers before file-systems and operating systems. (The fourth computer i used actually had an operating system).
OS/2 - because choice is a terrible thing to waste.
What a BBS was. How to use Fidonet; Xmodem; Zmodem. That everything Apple "created" after the II series was for people with special needs.
i remember on old apples there was a special hole puncher to make the disk double-sided (on the apple you had to flip the disk but ibm could read both sides).
You didn't need a special hole puncher. A regular round hole puncher worked fine and I did this routinely. If you wanted nice square notches an exacto knife would do the job. You only bought the "special" disk notching hole puncher for showing off.
Back in the day most applications with some sort of copy protection would load everything at once into memory. If your computer had a memory expansion port you could attach an ICE device to the memory expansion port, do a memory dump to it, write out the memory dump to disk and voila! you have a broken copy of that application. Is there an analog to this today?
Leave it to Eric Raymond to give us old guys a forum.
I too cut my teeth on BASIC and 6502 assembly.
I haven't seen any reference yet to the fine art of EGA's 16 of 64 color choices, horizontal and vertical timing, blanking interrupts and the like.
Back in those days before the likes of Google and Wikipedia I had a set of IBM PC DOS manuals including all the Int 21 functions, disassembled boot code and more. It is fun to reminisce, but like Mr. Raymond says, I don't miss it at all.
Just last week a dev here was surprised that a leading zero denoted octal in Javascript.
Best Slashdot Co
RS-232 over a 2 or 3 wire connection, for longer communication runs. I wonder if anyone still uses that?
Best Slashdot Co
It's an ESR article. Eric never uses the word "hacker" in the latter sense.
This is true. He keeps fighting that fight looooong after it has been lost. Nobody outside of a few pedantic geeks (like many of us here) use the word hacker in the positive sense ESR insists it should mean.
by using PC Pursuit to call BBSes.
Or just use the modem at work and lie about it when the phone bill comes in.
Getting annoyed when some salesrep starts sending a fax when you're in the middle of an important zmodem download on the same phoneline.
You'll never need more than 640k
INC vs FLT, Razor 1911, PWA, etc, etc. Scorpion cracking everyone's shit. iCE vs ACiD, BBS art etc. Demo scene and the Gravis Ultrasound, etc. THG and gay bashing. All kinds of intrigue and drama -- twenty+ years ago.
Still a good practice, but I don't often see the younger crowd employing this technique. I wonder if they still teach it in schools.
You could actually get it if you scaled down to a resolution of 160*100. Round 42 and Moon bugs used it, for a while dosbox didn't support it and you had to run another dos emulator called bhole.
Avantgarde Hebrew science fiction
It is still 3-5 extra functions compared to what you get with TTL serial adapters today! :)
Seriously though, you don't realize just how nice DB25 was feature-wise, until you get stuck on a DB9/4-6 pin TTL serial adapter and need those extra signals for something!
Boxing, red box, blue box, black box. You might not have had one, but you knew someone who did.
War dialing to find other modems listening in your area.
Kermit, Xmodem, Ymodem, Zmodem
Using a hole punch or exacto knife to turn single sided floppies into double sided.
That your x86 box was nothing compared to a SGI, Dec Alpha, or Sun workstation.
That email took longer around Christmas because every email server was choking on dancing Santa GiFs.
Browsing the internet with lynx and reading email with pine.
This made alot of ppl. *very* wealthy before their 18th birthday.
I'm surprissed nobody mentioned VGA and Mode 13h yet. It was one of the first things I learnt to program as a kid. int 10h to set the graphics mode, ports 3c7, 3c8 and 3c9 to read/write the palette, and then writing pixels to segment A000h.
Nobody remembers this. Postscript printers? Oh, well, just another driver from the list. Postscript files? Oh, just another format to store text or graphics.
I needed to make a rotary quadrature encoder of a specific number of pulses per rotation. I took the gap encoder (like these found in ball mice) and needed a disk with the right number of gaps. With gap width of order of 0.3mm. How to get that? Oh well, I'll have a transparency printed with the pattern.
Now... how to generate such a pattern? If I try raster graphics, I'll need enormous file to get the resolution I need. It will take a lot of time to generate. Well, maybe write it in Postscript?
Some search, some learning, and soon I had the postscript file, maybe 500 bytes long., with a bunch of code discs of various diameter and various number of cycles. Packed it onto a pendrive, took it to a print shop and asked to have it printed.
"It's half a kilobyte. Are you sure this is the right file?"
"Yeah, just import it into your graphics program."
"uh... okay." The file loads, the guy scrolls through two pages of of extremely detailed patterns. "Is that it?"
"Yeah. Print it on transparency, at as high DPI as you can."
45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
I forgot how I did this, but at work I set up the server where from home I would login to it with kermit and I would do something. The the remote server would call my system back were I could get in without having my phone # billed. At the time I was running Coherent 286.
My first 'hack' was helping write a program to format the floppy disks on Chromemco computers, as they did not provide one to the user. They made a lot of money for a while, selling you their pre-formatted 8" diskettes. I think they charged about 3 times the price of industry-standard blank media for theirs. Once the hack came out, they realized the game was up, and provided a formatter. Obviously, this was before DMCA, and sue-happy manufacturers. :>
V for Vendetta: People should not be afraid of their governments. Governments should be afraid of their people.
SYS64783
The term "hacker" has no real meaning. Some people think of hackers as people who break into computer systems.
The TRS-80 was the first computer I ever got my hands on, in our school library when I was in 5th grade. Taught myself BASIC on that.
My first home computer was the Atari 400. BYTE magazine would have programs in it I could type in, including ones consisting of many pages of just numbers - machine code. That membrane keyboard was tough on the knuckes after hours of typing!
My first "real computer" was a Sanyo MBC-550 - a clone of the IBM PC but it had a high-resolution mode (640x200) that could do 8 colors. Way better than CGA at the time! I wrote a music sequencer (in BASIC) on it and got it published in a magazine dedicated to that computer, when I was in 7th grade. The speaker could only be driven by a small bit of assembly which pulsed the speaker directly at whatever frequency you wanted, and for a specific amount of time (because it tied the CPU up completely - you couldn't abort it). To make a sequencer where you could "play" notes on the keyboard, I had to make musical notes as very short pulsed sounds, which created a sort of warbling effect. When you played back a recording, it would "compile" the short pulses into full notes of the appropriate duration, and play back without the warbling.
My first modem was 300 baud, but it wasn't an acoustic coupler. I'd log onto BBSs and could read the text as it came over the wire at 30cps.
In 1985, our school only taught Pascal, but I wanted to learn to program the Amiga computer which I heard was coming out soon. So I tought myself C in a directed study, using K&R and the Amiga ROM Kernel Manuals which were already available).
One of the most valuable programming lessons I ever learned was not to leak memory. The Amiga OS didn't have protected memory, and processes didn't keep track of memory use, so anything you wrote could leak and steal resources from the rest of the system. I'd have to reboot every now and then to get it back. The memory tracking tool "memtool" was my friend, and I'd run it before and after each run to see if I leaked anything.
My first real programming job was working on OCR of Russian books. We were using very high resolution 2 bit grayscale displays, which only had support for DOS. We wrote our own display library to draw lines, rectangles, and text, and I wrote my own windowing system with support for Unicode 1.0, which had just come out. But I had to make all my own fonts, which meant writing a tool in the windowing system I had made to make Unicode fonts for the windowing system.
Man, those were the days!
I find that way too many people don't have any concept of what a mainframe is and mainframes are still around and still being used behind the scenes. Most supermarkets and pharmacies work from mainframes and sometimes the people who use them are idiotic. I have seen someone who messed up an input screen turn her terminal off then back on and she was totally surprised when it didn't reboot but came back on and showed the exact same messed up screen. When I use a terminal emulator and choose VT100 I feel cheated because my school had VT100s and VT52s. The VT100 was the best terminal ever made, in my opinion and an emulator just makes me nostalgic.
When a computer stops working, the first thing to identify is the hottest chip on the motherboard ... usually a power transistor being used as a voltage regulator. Replacing that component always brought an old PDP-11 back to life.
Corollary:
How to use a soldering iron.
You'd be surprised how few people these days understand it, much less tell the difference by just looking at the data in a hex viewer.
Or being able to quickly convert between hex, dec and binary w/o a calculator.
Or know what an interrupt really is. Lots of forgotten knowledge, and some of it is still very relevant.
captcha: antics :-)
We used to easily count how many clock cycles an assembly code program would take to execute. This has led to a lot of problems, because modern CPUs are not like this at all, yet our programming languages were designed for these old CPUs.
In particular, there used to be no cache. The C language had no reason to organize data in any particular order, so it used C structs, which is about the worst possible memory layout now days. We typically use about 2 fields in a struct in an inner loop, yet we blow away a whole cache line, filling the cache mostly with data that the loop will never use. Simply by avoiding C structs, or C++ classes, memory-intensive applications I've tested speed up by 20%. Some speed up by 6X.
This wrong C memory layout was inherited by C++, Java, D, Go, Rust... pretty much every new language.
Celebrate failure, and then learn from it - Nolan Bushnell
Octal was way superior to Hex because when you were keying in individual bits you could slam in a whole byte at a time with your two hands. Reading it in octal was compatible with the human brain for reflexively translating to binary at your finger tips. That's how you programmed the Alair. toggle switches on the fron panel
NPSSMKTIAMJON
If you get nostalgic for the good old days, get your ham radio license. You'll be transported back to the past by trying to interface your fancy new $kilobuck radio with a modern PC, use software that can't address virtual com ports (meaning you'll have to hope your USB converter can fake being COM 1-4), actually attempt to communicate using only 45, 300, 1200 (but never 9600) baud, and deal with other users who won't let go of 20 year old computers running Windows XP because they're still pissed off they had to learn a new UI after that whole Windows 3.1 to 95 debacle.
Oh and when someone proposes actually doing something that might modernize the hobby, they get shot down in flames.
"Well, good luck finding a judge that doesn't run a bestiality site."
31 oct = 25 dec There were never any upper case, so nobody thought of each one being dates.
When somebody started with "Oct" and "Dec", then it was pointed out that those were dates.
A so-called innocent bystander looked at the thing on the chalkboard and asked What about Valentine's? Y'know 14 Feb?
"It was never in the equation"
which explained a lot back then. Still does now; every h4X0r knows that
Loved CPM, but like most folks had to at least deal with DOS and it's variants. Knowing the major entry points in INT 21h was required knowledge if you wanted to work in the innards. What a vast amount of detail I have forgotten ... ah, to get old :).
2600, enough said. oh and boxes, red box, blue box, beige box, etc..
Yeah those were they days.
Seeing the previous comment about flags made me think of a situation last week where I had to look up robocopy flags. With knowledge sometimes if don't use it you lose it.
I take it you never programmed a 12, 18, or 36 bit computer? Or for that matter a 60 bit word one?
In those cases octal is fairly natural. It was not common initially for computers to use 32 bits (or
for that matter 8 bits) commonly as division for text. ASCII is a 7 bit code, and 5 or 6 bit ones existed also, for text.
The definition of a "byte" was made clear on the pdp10: a contiguous group of bits within a word.
It was common on pdp10 to use "5/7 ASCII", 5 ASCII characters packed in a 36 bit word (with some
meaning assigned for the extra bit).
Anyway, in machines that used words that were multiples of 3 bits long, octal is perfectly commonplace (and
a bit easier to encode/decode since you never need any alphas).
There were BTW still earlier machines that worked in decimal. There were also 1's complement as well
as 2's complement machines (and some odd ones like the pdp1x where there is an instruction to switch
the machine from 1s complement to 2s complement so arguably it is both at once).
Back when sound cards cost an arm and a leg, Covox hacked a resistor-ladder based DAC using a parallel port. Simple to build and operate - you divide up the 8 bits amongst the parallel port outputs and just dump the PCM. It cost around $15-$20 and gave you much better sound than a PC speaker, but not as good as an AdLib or SoundBlaster.
So simple you can build one yourself. with a dozen parts.
READY.
?OUT OF DATA ERROR
READY.
That's what you get in a Commodore 64 if you it the backspace and return key.
The real hacker who grew up in the early 1980s will know why you get that error.
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
Then (1980s): Modem viruses aren't real
Now: Routers and other gateway devices are under attack, for real this time.
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
for different modem connection speeds
Comment removed based on user account deletion
After much complainign and whining (Unix guy through and through) I coded it up using that primitive little Windows CMD terminal
you are that guy. I am sure you think you are very clever, but your co-workers all refer to you as that guy. do your job. use the technologies you were asked to when you were hired.
stop being that guy. seriously.
The linked article looks like it is focused exclusively on the history of UNIX-like environments (and especially Linux)
But here's the problem. For the great majority of hackers back in the day, UNIX (and later Linux) wasn't even a thing.
Until Android smart phones became popular (fairly recently), neither Linux nor UNIX had much market penetration.
If you want to tell the story of things _every_ hacker knew, then UNIX and Linux are marginal side notes at best.
TRS-80, Apple II, Atari, Commodore Pet and C64, all had their heyday after mainframes and before IBM PCs
(and much more importantly for market penetration, PC clones)
On IBM-style PCs the main OSes were PC-DOS and later Windows.
Linux had even less penetration than OS/2 at the time. And UNIX was never mainstream except in academia.
Of course, that depends on your definition of "hacker".
I strongly suspect that ESR may be a wee bit biased towards Linux/UNIX (who knew?)
But IMHO that unfairly leaves out most of the real world at the time.
As for things every hacker once knew?
Among those not mentioned in the article
- Assembler (some of us could even hand assemble using a monitor, or even peek and poke)
- sprite graphics
- PC Dos interrupt 21h codes
- TSR (terminate and stay resident) routines
- inp ports
- ETAOIN SHRDLU
- hardware interrupt handling
- xor ax
- clock cycles per instruction
- stack manipulation
- pointer swizzling
- writing directly to the video card
- EA IFF
I could go on and on
g=c800:5
That is all
ATDTphonenumber
For the performance-critical portions of the project, since the compilers weren't good enough to take advantage of all the quirks of the 8086 (real mode) or 80386 (protected mode). In particular, make sure you learned the string instructions. That meant using Microsoft MASM or Borland TASM.
Then RISC came along, and most of the complex 32-bit instructions were actually slower than the simple load/store ones in the Pentium and later Intel chips. Then AMD 64 made the old 32-bit instructions almost completely obsolete.
Everybody used BitchX and Eggdrop on "shell accounts" somewhere in Eastern Europe
Now, if you'll excuse me, I have backups to corrupt.
... why we use asterisk and slash for multiply and divide instead of more relevant (to mathematics) symbols. The answer is your homework assignment, grasshopper...
Go into debug, type g=c800:5 and press ENTER. (low level format of the harddrive)
"Anyway, in machines that used words that were multiples of 3 bits long, octal is perfectly commonplace (and
a BIT easier to encode/decode since you never need any alphas)."
I see what you did there. ;)
From chip level up through the PCB. Embedded engineers still have to know these things.
Back in the deep mists of time, every programmer worth their salt knew that division was an expensive operation. If they were lucky, the numbers they would have to divide by would be a power of two, and doing so requires a single shift instead of a divide. Back in the day, compilers did not automatically substitute division by a power of two with a shift, and if you were reading sourcecode, you could tell that the programmer knew their stuff if they wrote "x>>1" instead of "x/2".
Then along came optimizing compilers, that were smart enough to know what you were trying to do, and for unsigned integers they would automatically substitute the divide with a shift. Soon after, people stopped writing a shift and just wrote a divide instead, trusting the compiler to do so and in the process, making the code easier to read.
A newer generation of programmers came along, and noticed nothing 'unoptimized' about division by constant powers of two, so they just took it for granted, and were completely unaware of this trick. However, one consequence of this is if picking an arbitrary number to divide by, if they don't choose a power of two, the compiler can no longer do the abovementioned optimization. It used to be the case that arbitrary choices of numbers were powers of two, but not anymore. In fact, if books that had the potential to be turned into video-games were written bearing in mind this optimization, we may see some top-level title-changes. For example, instead if calling it 50 Shades of Grey, E.L. James should have called it Sixty Four Shades of Grey, and if someone tried to compile it, they'd end up with a somewhat faster game.
Also, if we take for granted the compiler will do this for integer division, we may forget that when dividing signed numbers, we may get the compiler producing code like this
(x>0 ? x>>1 : x/2 )
Eric's history is interesting and valuable as long as you realize it is based on his stove-piped career. There are glaring omissions. In particular there was this company called IBM that dominated the data processing industry for most of the 20th century. The end of the 36-bit era and the universal use of addressable 8-bit bytes began when IBM introduced the System/360 in 1964, not when DEC finally stopped making PDP-10s in 1983. ASCII did not grow out of anything, it was a fresh creation of a new standard. IBM even pretended to support it, though it used its own 8-bit code, EBCDIC. The short Unix commands were optimized for Teletype machines. Video displays were not cheaper than Teletypes at first, they succeeded because they were much faster and far more user friendly, not because they saved money on consumables. Many early minicomputers supported the native "current loop" interface to the Model 33 Teletype. Tektronix storage tubes deserve a mention. They made graphical computing possible when memory was far too expensive for display buffers. RS232 is still alive and well in the Arduino world; level shifting there means 5 volt to 3 volt. I would mention the 16-bit programming address space that almost all minicomputers had, which forced programs to fit in 64K byte segments. It made it hard to grow software because it forced you to constantly restructure to fit in small overlays. I once had an argument with Gordon Bell of DEC about this when the PDP-11 was introduced; he thought any program larger than 64K *should* be broken up. In general hardware people had a greater influence on computer design in the early years. Early microcomputers adopted the same 16-bit addressing scheme. The Motorola 68000, introduced in 1979, was the first to allow a larger address space (24-bit at first, but architecturally 32-bit). Line printers and multi-part fan-fold paper forms also deserve mention. IBM printers used to be controlled by a loop of paper tape with holes that allowed a fast move to the top of a new page or even a point in the middle, hence form-feed and vertical tab. USB's popularization by Apple deserves mention too, especially since the are now leading the push for USB-C.
Mom's phone number, by heart.
I think this is still pretty standard. I just copy-pasted a binary search snipplet in Javascript from stackoverflow a few days ago and the mid-value was calculated using the '>>' operator.
Signature deleted by lameness filter.
Boot a computer. Shortened version of "run a bootstrap program" - a program that allows a computer to lift itself by its own bootstraps (i.e. initialize a device and read enough of the OS loader from floppy/cassette tape/paper tape/whatever to load the rest of the OS.
Time's fun when you're having flies. - Kermit the Frog
The article mentions ASCII Field Separator as a character that was "Never to my knowledge used specially after teletypes.". I can think of one example. The HL7 MLLP (Minimal Lower Level Protocol) uses FS (0x1C) as the default character to indicate the end of a complete record. HL7 (Health Level 7) is a format commonly used in the medical world to transmit events, health records, and perform queries between different systems. ASCII VT (0x0B) was used as the start record indicator.
Of course implementers could agree on other characters for a particular interface, and most software allowed you to configure this, but these values were the defaults in the spec and most interfaces stuck to that. I also recall some of the lesser-used ASCII characters used as separators is ASC X12 formats as well, but can't recall off the top of my head which ones.
A few fun ones I used to do:
1. Wrote a DOS EXE program in C that would allow me to change the modify date/time stamp of a file. So then I could prove to people that a document was older than it was :)
2. In a college CS class, we all were on a unix box. I would use the command : talk [username] then hit return about 50 times and that person's screen would go blank thinking the program they were working on got wiped out. Or the original multi-user chat "ytalk"... we would get about 5 of us together on a ytalk session when we had a quiz to brainstorm on the answers.
3. And still a fun one -- very easy with .Net to generate emails with anyone else's "From" address (in certain environments). And then send emails "from the secretary" to tell people that they had a package at the front desk.
I could set up a Model 26 or 29 keypunch to skip certain fields, and shift into numeric mode for others. Huge savings in productivity. I also knew how to use a collator so that a dropped deck could be put back in sequence. Then there was knowing how to splice a paper tape when it tore, which it frequently did unless you had the budget and foresight to use mylar tape. It's quite remarkable nowadays to realize how dependent we used to be on physical media to handle information.
RS-485 is still used quite a bit in industrial process control. It's also part of the standard used to control stage lighting and such. At a concert, when the lights are moving around and flashing that's RS-485 carrying a very simple protocol called DMX. I still build DMX stuff as a hobby these days.
If you have to ask what it is...
Time's fun when you're having flies. - Kermit the Frog
--@-@--
How to initialize the MFM/RLL or ESDI drives thru the DEBUG hack of the BIOS.
You keep going until you die..."Me".
After all, that DOS network driver wasn't going to put itself into high memory...
I am not a sig.
Back in the 1970s, 80x25 characters was the common resolution for a terminal display. Each character was 9x14 pixels (or less commonly, 8x8 pixels). That meant the terminal displayed 720x350 pixels = 252,000 bits of data, or 31.5 kB (or 16 kB for the 8x8 fonts). How then were cheap terminals able to support these resolutions when RAM cost $50 per kB?
Clever engineers came up with text mode. The bitmapped fonts were hard-coded into the display in ROM (which was much cheaper than RAM). So if the terminal supported ASCII, it held 127 9x14 characters in ROM (2000 bytes worth). The computer would then send the display a list of characters to display, rather than a list of pixels. The display would look up each character in ROM, and use that bitmap to display that character (or rather, a row of 80 characters). Then move on to the next row, and so on, then repeat again from the top. This allowed the terminal to display 16 or 32 kB worth of graphics using only 2 kB of RAM (either built into the screen or streamed in real-time from the computer). The caveat being that only text could be displayed.
G 0
2s complement - still hanging on with enormous Ints appearing instead of negative numbers from time to time
A lot of the things above are very familiar (physical text terminals, jumpers, serial ports ....) but one I haven't seen mentioned is a bit newer, but still once known but forgotten - the fact that early Macintoshes (and thus MS Excel for Macintosh) used 1 January 1904, rather than 1 January 1900, as the first date (for intresting reasons: Why Do Older Macs Reset to 1904?).
Of course for backwards compatibility MS Excel for Macintosh continued to use this as the default for many years afterwards, causing confusion among those unfamiliar with it when transferring files with dates even quite recently, and there is still an option in Excel to set this.
Differences between the 1900 and the 1904 date system in Excel
I am a Renegade expert. And I don't mean setup a BBS and called it a day, I have hacked the OVR (data file) 6 ways till sunday.
What always amazed me about Regegade is how well coded it was. It allowed for us to extend a whole bunch of things by merely changing ANSI logic in the OVR.
For instance Renegade was always limited to 5 line File_id.diz (filename desciption files) but was well enough architected that I was able to use ANSI escapes to exploit how it rendered the lines, and make it support an unlimited length of File_ID.diz
There were a few "mod releases" to accomplish this, but none of them actually work and in fact went about it the wrong way. To my knowledge no one has ever accomplished this hack of the OVR except for me. The day I made it work in Renegade by Hex editing a file was my "neo moment", long before the Matrix was a thing. It also made me pretty leet in my circle.
---Up Up Down Down Left Right Left Right B A START
ESR said in the article he was explicitly drawing the line at certain things, including things before a certain time. I'm dating myself in an "uphill both ways in the snow" sort of way when I recall I used to be able to read punch cards from the back.
It is the duty of Eric Raymond to kill himself.
Along with BBSes and usenet, you had to use gopher and FTP sites to get/share any information. It was more of a discovery process. It's staggering to think how far we have come since then. Everyone also had copies of the Jargon File and the Anarchist Cookbook in txt format.
I used to be able to read hex quickly, from using line analyzers at my first job (cell phone communications).
I also had to use 9-track tapes. Builds took several hours, installs took even longer. For the systems we were working on it was a 24hr cycle from build to running test system, and we only did them every two weeks. You had to be much more careful, and failing fast wasn't an option. I don't miss those days.
My beliefs do not require that you agree with them.
The first PC hack and hacker was the dude who figured out the open bus on the Altair could be used to drive an AM radio placed next to the computer. That's still my all time favorite hack because I would have never thought of it in a millionaire years. Of course this was 1975 and I wasn't even born until 1984, but still.
That's an even cooler hack than Bill Gates writing a Basic for the Altair in 44kb.
All CS students were required to hand compile code to get a better understanding of what happened on the machine level.
Some good lessons there.
âoeTolerance applies only to persons, but never to truth. Intolerance applies only to truth, but never to persons.
To format the drive on a machine with MFM or RLL encoded harddrive, you had to access the rom from debug debug G=C800:5
If privacy had a tombstone it would read "We did it for your own good" . -- John Twelve Hawks
Toggle in changes through the switch register and dump a new program to paper tape (6 bit of course). Travelling with heavy bags of program listing and a toothbrush.
Similarly, 8-bit graphics refers to color depth, not pixel size. I recently worked on an old machine that had 8-bit graphics - and the display was 1024x768.
Your ad here. Ask me how!
Modern programmers have no idea how a linked list or a hash table are stored how, how sorts work, how garbage collection and memory allocation actually works...
This was really driven home to me when one of the Java guys was trying to look at some C code and thought the linked list stuff was a bug he'd found. 'It's just a reference back to itself!'
I have to admit that mostly it doesn't matter, but occasionally their assumptions of infinite memory and infinite processing power lead them to do some really dumb things that are inconceivable to anyone who actually knows how things work under the hood. I've given some of their Java code a 1000x speedup just by the simplest optimizations like not reading the entire file every time to process a single line.
export DISPLAY=someterminal.cs.edu:0.0
xkill &
Or:
$ yes > /dev/tty32 # Where tty32 corresponds to someone’s shell
in cdc computers when seymour cray worked there...
nothing to see here - move along
Personally, I find most IDEs unusable compared to the CLI tools. They tend to be laggy and crashy and at the same time unable to handle some fairly simple things that vi handles easily. They also seem to have no way to handle anything vaguely 'special' in the build process.
It might be easier to use the CLI tools while wearing mittens than it is to use an IDE.
Morse code. In order to get a HAM license.
Yeah, I'm that old.
P.S. I had to add the text in the subject to get rid of the "cat got your tongue..." validation error, because obviously whoever wrote the validation code doesn't know, or didn't consider Morse code to be text in a subject line.
Telnet client is no longer installed by default on Windows machines, and the protocol is deprecated for good reason, but I still use it occasionally to connect to TCP port 25 on an SMTP server and manually type commands to send a test e-mail.
We wrote "XOR AX, AX" instead of "MOV AX, 0" because it was maybe 1 CPU cycle faster. Just about everything we did back then fell under the proverbial premature optimization, and we liked it!
I had an Apple ][e with a whole 64KB of RAM (doubled to 128KB in '86).
At 15, I could do a boot trace on a protected game to crack it. Methodical, simple, surprisingly easy. Learned how nybble counts worked to sync a disk spinning so it could be read, and knew how to modify the RWTS (read/write track/sector) code in an OS to protect/unprotect a disk. Didn't have a modem then so never did any phone phreaking - a 2400 baud modem was like $500(!!!) - and that was an unbelievably fast modem then.
Used "Big Mac" Assembler, for programming machine language on the 6502 processor.
That was some good times.
UUCP
sendmail
Sometimes even in combination.
We used to do it in our heads.
In fact, the first SimCity data formats used a double hex code, so it was easy to hack if you did that.
Also, files don't end where you think they do. It's all about the actual storage. Most coders used that extra part you thought was empty to store fun things.
-- Tigger warning: This post may contain tiggers! --
Once upon a time, hard drives came with a piece of paper listing the bad tracks. On a PC/AT, you would enter the list of bad tracks manually before partitioning.
I bought a used Micropolis 80 MB ESDI drive for my Epson Equity III PC/AT clone. Good times.
Mission: To provide products that consume time and energy as entertainingly as permitted by the laws of thermodynamics.
We all wish ESR would become a socialist.
Integer Maths (i.e. fixed-point)
There was a time hard float, even soft float, didn't exist
c:\> copy con filename.txt
type something here
type some more stuff
Ctrl-Z (to close/save the file)
Mission: To provide products that consume time and energy as entertainingly as permitted by the laws of thermodynamics.
ESR is begging now? Anybody else remember what a douche nozzle he was after RedHat IPO'd?
I used to use these for interview questions, but I gave up, because nobody knew them anymore, not even the Master's Degree candidates:
1. What's the largest value (approx) you can store in a signed 32 bit int? Unsigned 32 bit int?
2. If you don't know, how could you quickly figure it out?
How to generate the needed tones to crack into the LD lines
(and other Phun ThingZ)
bonus who can from a recording correctly tell from the handshake what speed a modem connected at??
How about a IBM green card, and I am not talking immigration. Useful for OS/360 opcodes, machine formats and punch card to decimal conversions. I still have one in my desk.
How to write directly to memory mapped displays
How to static link
How to use a hex-editor to patch binaries.
How to decode binary data files
Understand big O
Writing a simple bubble sort. Storing, sorting, and retrieving data without XML or a database. Parsing data without XML or a database. EDI, HL/7
Bi-sync, A-sync communications. RAM drives ( I still use them today with much success and surprise from Millennials who are clueless of the benefits.)
Allocating storage and determining proper record and blocking sizes as disk storage was not not always dynamically allocated as it is today.
How to reboot a mainframe by entering the boot-strap into the registry via push-buttons on the mainframe. ( okay, very few programmers EVER learned this, only the exceptional ones. (BIG GRIN) )
boring. you're boring.
Drive unreadable? Pop it in the freezer for a few minutes and then it would work long enough to offload your data to a new drive.
Parity. Not how it works (I can forgive assuming it's being done for you), but what it is.
New "programmer" at my then-job did not know what parity bits were for.
Something all hackers knew? The frequency of the most well-known tone of a blue box.
Good luck getting laid at Wiscon, if you're what they call a "cis-male," i.e. straight, normal red-blooded American male.
The mere suggestion that you have sexual desire toward women will probably get you drawn, quartered, and burned at the stake!
I was born too late. The '70s were the bygone era of loose liberated cons.
My first joystick came with a 8bit ISA card and a leaflet that included the source code of a simple BASIC program for calibration.
You would need to run it once to have the joystick calibrated. This was required for older XT computers and games that lacked inbuilt calibration.
It was a QuickJoy Jet Fighter joystick and the PC was a spare Commodore PC-20 my parents gave me.
How to edit DOS savegames in a HEX editor was a good skill to have, too.
Creating a Monkey Island copy protection disk using a SCSI flatbed scanner, a postscript printer and some scissors.
Use Novel DOS instead of MS DOS and copy files via IPX between two computers.
Make your own LapLink cable to share files between to DOS computers.
Parity is a 1 bit hash function. Not so impressive when you explain it that way now is it?
The interesting thing is that, despite your negative viewpoint of the now-standard (and my preferred) use of "hacker", it is exactly those hackers that are still nearly-universally familiar with the tools you describe. I work in a security research lab, and we all use "vi, gcc/g++, make, tcpdump+Wireshark, valgrind, vi and a few other choice commandline monsters" on a daily basis, along with quite a bit more. Become the modern definition of "hacker"; you'll be much happier with your colleagues!
Nope, from what I gather the Mac drives were [zoned] CAV (constant angular velocity), and the PC drives were CLV (constant linear velocity).
I remember some CD ROM burners back in the day with these properties as well (Plextor comes to mind). That was important because it could more accurately write the main data channel, plus some p & q channels that SecuROM or SafeDisc used as copy projection measures (look up CloneCD / ClonyXXL, Alcohol 120%, DiscJuggler, and 1:1 copy).
Here now, I believe you've forgotten about the 0th octet?
chmod 777
is really
chmod 0777
The first three bits are:
SUID bit (4xxx) - Set UID on file. Runs with permission level of owner, use on executable files, beware, however, for if they are owned as root, they run as root. If you see a S, it means the SUID bit is set, but you cannot use it - the file's not executable. In Linux/Unix, does nothing for directories.
SGID bit (2xxx) - Set GID on file. Runs the executable with group ownership of the assigned group. Same with dirs.
Sticky Bit (1xxx) - Set sticky on a directory (see /tmp), prevents other users from truncating your temp files. On my Linux servers, the /tmp directory permissions are always 1777.
I still have sys admin folks ask me why our Oracle database doesn't have the data tablespace on one drive and the index tablespaces on a separate one. I tell them I'll make that "fix" as soon as we move off RAID. sheesh.
ATH0 hangs up.
Text based menus
Evolution of sorting schemes
procedural programming
Why we needed to conserve memory or disk space
Games that utilized clock speed for game control
Why Cartesian product queries were bad
Why clicking the Start button to shutdown the PC was confusing
Why Windows 3.1 was called Windows
What was VisiCalc and why was it so important
What kind of frustration the keyboard buffer used to cause on people who knew how to type because the PC could not keep up with them. I could type fast than my mom on our Apple IIe because my 20 wpm ended up being faster than her 100 wpm since half of what she typed was lost by buffer overrun and she would have to go back and correct everything.
Why we carried a dime (later a quarter) with us when we went out and what a pay phone is (and how phreaking got around the need for the quarter)
What is a beeper (later a text pager)
A dictionary used to be the name of a type of book that defined words
An encyclopedia was a set of books that told you about all kinds of information, and it was put together by a group of professionals
0xDEADBEEF
0xCAFEBABE
0xCAFED00D
0xDEADC0DE
0x8BADF00D
I miss DOS. There's an arrogant tech snob lurking deep inside of me who still wishes that computers and Internet access were expensive luxuries. The world was a much more civilized place back in the old days.
I have a AdaFruit Bluefruit which is a small embedded board with a Bluetooth chipset on it. I use it to build a wireless Midi controller for a synthesizer.
The Bluetooth, including Keyboard and Midi commands is programmed with AT commands. Takes me right back to the 80s.
The dangers of excessive individualism are nothing compared to the oppressiveness of excessive collectivism
Happy to see ESR using crowdfunding, and I seriously think that more developers should consider refocusing to work on open source full-time. Let's say that a company might build DRM-ridden software to make money only on the most popular OS/platform, but a crowdfunded developer might be able to work on a non-DRM alternative that works on all systems. By this I mean that while commercial companies use, as well as build and directly sponsor, open source software, what gets sponsored might not be the best "for the greater good". Staying independent might avoid some of the inherent conflicts of interests in sponsored development. Now, making a decent living only/mostly programming open source software "for the greater good" offers quite the hurdle -- 9-5 work is the easiest choice for most, hopefully at least with some degree of open source contributions.
Shameless plug: I figure that ESR has about 25 more years of open source contributions than I, but last night I joined Patreon to see if there's even the slightest chance to make the switch from primarily closed income to primarily open source income. Feedback appreciated! patreon.com/joelpurra
joelpurra.com