惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

W
WeLiveSecurity
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Hacker News - Newest:
Hacker News - Newest: "LLM"
Cloudbric
Cloudbric
V
Visual Studio Blog
L
LangChain Blog
A
About on SuperTechFans
B
Blog
T
Tenable Blog
罗磊的独立博客
Hacker News: Ask HN
Hacker News: Ask HN
Blog — PlanetScale
Blog — PlanetScale
博客园 - 三生石上(FineUI控件)
The Register - Security
The Register - Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
P
Palo Alto Networks Blog
U
Unit 42
WordPress大学
WordPress大学
D
Darknet – Hacking Tools, Hacker News & Cyber Security
N
News and Events Feed by Topic
T
Threat Research - Cisco Blogs
C
Check Point Blog
Security Latest
Security Latest
M
MIT News - Artificial intelligence
Application and Cybersecurity Blog
Application and Cybersecurity Blog
宝玉的分享
宝玉的分享
P
Proofpoint News Feed
NISL@THU
NISL@THU
Forbes - Security
Forbes - Security
S
Securelist
Security Archives - TechRepublic
Security Archives - TechRepublic
Hugging Face - Blog
Hugging Face - Blog
aimingoo的专栏
aimingoo的专栏
Latest news
Latest news
GbyAI
GbyAI
T
Troy Hunt's Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
L
LINUX DO - 热门话题
V2EX - 技术
V2EX - 技术
小众软件
小众软件
Google DeepMind News
Google DeepMind News
K
Kaspersky official blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
O
OpenAI News
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
N
Netflix TechBlog - Medium
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Google DeepMind News
Google DeepMind News
P
Proofpoint News Feed

Secret Weblog

Becoming More Xee: A Modern XPath and XSLT Engine in Rust Looking for new challenges! Repeat Yourself, A Bit The Curious Case of Quentell The Humble For Loop in Rust The Humble For Loop in JavaScript Don Question Best Practices I Was a 1980s Teenage Programmer Part 5: Achieving Assembly I Was a 1980s Teenage Programmer Part 4: The Call of Assembly The Tooling Shift I Was a 1980s Teenage Programmer Part 3: MSX-2 JavaScript: when you need two ways to do it! Empowering Programming Languages Bloat and Retrofuturism Refreshing my Blog Again Random Rust Impressions Apilar: An Alife System I Was a 1980s Teenage Programmer: the Alphatronic SolidJS fits my brain Is premature optimization the root of all evil? Framework Patterns: JavaScript edition Roll Your Own Frameworks Framework Patterns Secret Weblog Highlights Refactoring to Multiple Exit Points mstform: a form library for mobx-state-tree Seven Years: A Very Personal History of the Web Morepath 0.16 released! Is Morepath Fast Yet? Introducing Bob Strongpinion Punctuated Equilibrium in Software Morepath 0.15 released! Impressions of React Europe 2016 Morepath 0.14 released! Morepath 0.13 now with Dectate Dectate: advanced configuration for Python code JavaScript Dependencies Revisited: An Example Project The Incredible Drifting Cyber A Brief History of Reselect The Emerging GraphQL Python stack Thoughts about React Europe Build a better batching UI with Morepath and Jinja2 GraphQL and REST Server Templating in Morepath 0.10 10 reasons to check out the Morepath web framework in 2015 A Review of the Web and how Morepath fits in Morepath 0.9 released! Better REST with Morepath 0.8 Morepath 0.7: new inter-app linking They say something I don Life at the Boundaries: Conversion and Validation BowerStatic 0.4 released! Morepath 0.6 released! Morepath 0.5(.1) and friends released! New HTTP 1.1 RFCs versus WSGI Against On Naming In Open Source My visit to EuroPython 2014 Morepath 0.4.1 released (with Python 3 fixes) Morepath 0.4 and breaking changes Announcing BowerStatic Morepath 0.3 released! Morepath 0.2 Morepath Python 3 support The Call of Python 2.8 Morepath 0.1 released! WebOb and Werkzeug compared Morepath: from Werkzeug to WebOb Racing the Morepath: SQLAlchemy Integration The Centre Cannot Hold Breaking Morepath Changes Morepath Update How to do REST with Morepath Morepath Security the Gravity of Python 2 #python2.8 discussion channel on freenode Alex Gaynor on Python 3 Morepath Documentation Starting to Take Shape Back to the Center Morepath App Reuse Implementing Grok Grok: the Idea Why Linux Works for Me On the Morepath Reg, Now With More Generic! The New Zope as a Web Framework Jim Fulton, Zope Architect Renewing Zope Object Publishing The Weirdness of Zope The Rise of Zope My Exit from Zope Reg: Component Architecture Reimagined JSConf EU 2013 impressions Obviel 1.0! JS Dependency Tools Redux Obviel 1.0rc1 released! Succinct data structures
I Was a 1980s Teenage Programmer Part 2: Olivetti M24
Martijn Faassen · 2022-07-21 · via Secret Weblog

This is Part 2 of a series.

The Olivetti M24

When I was about age 11, around 1984, my father's office got a new computer: an Olivetti M24. Olivetti, like Triumph-Adler, started out as a typewriter manufacturer, this time an Italian one instead of a German one. And like Triumph-Adler, and IBM long before it, computers were just more office equipment.

The Olivetti M24 was an IBM PC clone and it had a good reputation. It was IBM compatible but had a faster Intel 8086 8 MHz CPU instead of the 4.77 MHz in the IBM PC. I realized that back then; my father talked about it.

Here's an ad for the M24.

Ad for m24 with dog and bowler hat

I think the black bowler hat in the picture is a sly hint towards IBM PC compatibility, as the IBM ads at the time featured a Charlie Chaplin tramp lookalike.

Charlie Chaplin ad for IBM PC

Unlike the ad, we didn't have a color screen though, it was light blue on black:

Light blue on black screen

RANDOMIZE TIMER

I continued my BASIC programming sessions. I had seen computer games at my uncle, who at some point had upgraded to a Commodore C64. The Olivetti M24 also had a few simple games available, written in BASIC. My goal was to create a computer game. My goal throughout my teenage years remained to create computer games. I was never very successful, but on this quest I learned about programming.

One of the great problems I had was how to generate random numbers. In my mind, games had to involve randomness, otherwise the enemies would behave the same each time you played the game. I learned that I could use RANDOM in BASIC to get a random number, but it got me the same sequence each time I started the program, which frustrated me. I learned about the RANDOM SEED, but that required you to either hardcode a number (leading to the same problem) or asking the user for one each time the program started up, which for some reason was unacceptable to me.

One day I joined my father on a business trip to a software developer in another town in the Netherlands, and this resulted in a breakthrough. I presented my problem to a programmer there, and he suggested I try RANDOMIZE TIMER. This was the first professional programmer I ever talked to in my life.

This sounded absolutely baffling to me - I realized TIMER had something to do with time, but how in the world would that fix my problem? But back at the office again I tried it out and it did. The magic worked!

I was elated! I am not sure when I put together that computers have a built-in clock and that this time taken as a number was arbitrary enough that it could serve as a seed for a random number generator.

User Guide

It's interesting to reflect on the fact that I barely spoke any English at this point. I had been exposed to English-spoken television with subtitles in Dutch, but I couldn't really read English.

The Olivetti M24 came with manuals in English. I would browse through them to try to learn more about the possibilities of programming.

I knew books; I read lots of them from the local village library. The covers had a title and the name of the author. The manuals had, I thought, the name of the author on it as well. The M24 manuals had titles, like "MS GW-Basic Interpreter under MS-DOS". Since the Olivetti brand was Italian, I assumed "User Guide" was the name of the Italian author. "User Guide" kind of sounded Italian to me. My parents were amused when they found out about this creative interpretation. I'm still amused to this day.

Manual by famous Italian author "User Guide".

Information Space

Computers were magic, but if I cracked the magic I might be able to create a game. Some of the incantations I understood, and some remained a mystery.

The information space I was in was very limited. Obviously no internet. No BBSes either; no network of any kind. At some point later in the 1980s I saw Wargames on TV, but the notion of being able to dial into a distant computer was still science fiction to me. My interformation space about computers the early days mostly consisted of my father and the User Guide.

More Olivetti Stories

As to the M24, my father bought more of them for the office. He also acquired a second hand "luggable" computer a few years later, the Olivetti M21, at some point. I played Space Quest on it. The hard drive was flaky -- sometimes it would audibly spin down, which would block scene transitions form loading in the game. A good slap on the top would cause the drive to spin up again, and the game would continue.

In the early 1990s I went off to college and I was gifted an old M24 for me to use. I remember running a LISP interpreter on it; by that time I was able to copy programs off the Internet to run on it.

Next time...

Thanks for reading part 2 of this series! Next time, we'll go into when I got an actual home computer, an MSX-2.