The Wiert Corner – irregular stream of stuff

Jeroen W. Pluimers on .NET, C#, Delphi, databases, and personal interests

  • My badges

  • Twitter Updates

  • My Flickr Stream

  • Pages

  • All categories

  • Enter your email address to subscribe to this blog and receive notifications of new posts by email.

    Join 1,830 other subscribers

Archive for the ‘History’ Category

Futurist 20 years ago “The Internet will not become a mass medium” – via littlewisehen on Twitter: “Also sprach der Zukunftsforscher… 😂”

Posted by jpluimers on 2021/03/02

Today exactly 20 years ago, a futurist indicated “The Internet will not become a mass medium”.

Source: [WayBack] littlewisehen on Twitter: “Also sprach der Zukunftsforscher… 😂 https://t.co/taNRUxZD3S”

Via:

Thomas also made this great (German) observation:

2001 war vielfach noch Modem und ISDN angesagt, Flatrates waren gerade wieder abgeschafft worden, DSL gab es in machen Gegenden, war bei 2 Mbit aber mehr als doppelt so teuer wie heute 16 Mbit. Erinnert sich noch jemand an die unsäglichen AOL-CDs, die allen Zeitschriften beilagen?
Es gab noch keine “sozialen” Netzwerke und von mobilem Internet hat man nur geträumt. Selbst dumme Handys waren noch nicht so weit verbreitet wie heute Smartphones, und es kostete richtig Geld, eines anzurufen.

Das ist noch keine 20 Jahre her, aber ich komme mir gerade vor, als ob ich die Zeit des Schwarz-Weiß-Fernsehens beschriebe.

Google Translate actually does a halfway decent job on that (see below) which I’ve edited to this:

2001 was in many cases still the era of modem and ISDN. Flat rates had just been abolished again, there was DSL available in some areas, but at 2 Mbit was more than twice as expensive as todays 16Mbit. Does anyone remember the inexpressible AOL CDs that came with all the magazines?
There were no “social” networks and you could only dream of mobile Internet. Even dumb phones were not as widespread as smartphones are today, and it costed real money to call a mobile phone.

That was only 20 years, but it just feels as describing  black and white television.

Unedited Google Translate:

Read the rest of this entry »

Posted in History | Leave a Comment »

Evil environment variables….

Posted by jpluimers on 2021/02/11

I totally agree with Nick Craver “I absolutely hate environmental variables for configuration. They’re brittle, they’re ambient, they can be changed and FUBAR any known state underneath you, they’re an attack vector, just…”.

A little event in the early 1990s made me cautious whenever I see environment variables in use.

One of my clients had a network that had to be separated into three logical areas: one for workstations communicating with a certain server and some equipment, and another for a different server and other equipment, and finally a bunch of semi-local workstations that did some peer-to-peer and specialised equipment communication.

For that era, this was a LOT of stuff to manage.

Since users always were working from the same computers, and there was very little overlap between the areas, I created a bunch of login scripts. Since this was Novell NetWare 3.x era, you only had default, system and user login scripts (see [WayBack] NetWare 3 Login Script Fundamentals), of which only system+default or system+user could be combined. No groups scripts yet (:

So I introduced an environment variable NETWORK that would hold the kind of logical network.

Boy was I surprised that a few days later, the head of administration came to me with a problem: one of his administration programs – despite no documentation mentioning anything about such a feature – suddenly asked for a license!

A few hours of phone calls and trying later, we found the culprit: that software had an undocumented feature: when the NETWORK environment variable was set, it assumed a large corporate, with a very special license feature.

That was the day, I started to be wary of environment variables.

The workaround was simple: have the program being started with a batch file, temporarily clean the NETWORK environment variable, then run the application, and finally restore the environment variable.

Inspired by two tweets I got within a few days time:

–jeroen

Read the rest of this entry »

Posted in History, Power User, Security | Leave a Comment »

Cool: Apple mini-assembler found inside Woz’ monitor inside Apple II Integer Basic

Posted by jpluimers on 2021/01/18

From a while back: [WayBack] This week, a mini-demo of the mini-assembler found inside Woz’ monitor inside Apple II Integer Basic. CALL –151 F666G … – mos6502 – Google+

This week, a mini-demo of the mini-assembler found inside Woz’ monitor inside Apple II Integer Basic.
CALL –151
F666G
You can find reconstructed sources in Jeff Tranter’s repo here:
https://github.com/jefftranter/6502/tree/master/asm/Apple%5D%5BMonitor
where we see credits to Steve Wozniak and Allen Baum. But in this oral history it seems the assembler was Baum’s work:
“Baum: So it was brute force, very simple and fit into 256 bytes if you already had the 256-byte disassembler.”
https://youtu.be/wN02z1KbFmY?t=3941
Anyhow, one page of code – or two – is very impressive!

For more info, try searching for F666G! (We wonder at this memorable address – the Apple I price was $666.)

Related:

–jeroen

Read the rest of this entry »

Posted in 6502, Apple, Apple I, Apple ][, History | Leave a Comment »

Interesting pieces of RetroMacCast : RMC Episode 433: Clamshell G4 iBook – first virus and Apple ][ forever

Posted by jpluimers on 2021/01/04

From the [WayBackRetroMacCast : RMC Episode 433: Clamshell G4 iBook the most interesting pieces to me were these:

–jeroen

Posted in 6502, Apple, Apple ][, History, Power User | Leave a Comment »

In Amsterdam zonder Ja-Ja sticker hoef je de @AxenderBV bezorger geen fooi te geven

Posted by jpluimers on 2020/12/21

In 2019 instrueerde [WayBack] Axender B.V. (@AxenderBV) | Twitter haar bezorgers om langs alle deuren te gaan, ook die in Amsterdam geen JA-JA sticker hebben.

Die bezorger hoef je dan dus geen fooi te geven, want je krijgt geen folders.

Axender bezorgt ook incidenteel de City krant: bij ons in Amsterdam 1 keer in 2018.

–jeroen

 

Gerelateerd:

Posted in About, History, Personal | Leave a Comment »

Running BBS Door Games on Windows 10 with GameSrv, DOSBox, plus telnet fun with WSL – Scott Hanselman

Posted by jpluimers on 2020/12/07

Reminder to self: see if I ever can resurrect my old BBS and FidoNet node that was based on at least:

  • FrontDoor (by Joaquim Homrighausen)
  • RemoteAccess (by Andrew Milner)
  • GoldED (by Odinn Sørensen)
  • A FOSSIL driver (forgot the name)
  • A Fidonet NodeList Compiler
  • a Message Tosser

Maybe a good place to start: [WayBack] Running BBS Door Games on Windows 10 with GameSrv, DOSBox, plus telnet fun with WSL – Scott Hanselman

I already wrote a few times about me being on Fidonet, and BITNET in the late 1980s:

A few email addresses I have been using in that era:

A tag-line from me in that era (I blanked out the phone number as it now belongs to someone else):

    o _   _  _   _   _             voice:  +31-2522-XXXXX (19:00-22:00 UTC)
   / (_' |  (_) (_' | |            snail:  P.S.O.
__/                                        attn. Jeroen W. Pluimers
                                           P.O. Box 266
jeroenp@rulfc1.LeidenUniv.nl               2170 AG Sassenheim
jeroen_pluimers@f521.n281.z2.fidonet.org   The Netherlands

Related:

–jeroen

Posted in BBS, dial-up modems, FidoNet, History, MS-DOS, Power User, Windows | Leave a Comment »

Why is “finite” in “infinite” pronounced differently than plain “finite”?

Posted by jpluimers on 2020/12/04

December thoughts: [WayBackWhy is “finite” in “infinite” pronounced differently than plain “finite”?… – Jeroen Wiert Pluimers – Google+

Q

Why is “finite” in “infinite” pronounced differently than plain “finite”?
As a partially word-blind person, those differences make natural languages very hard for me to grasp.
Especially because Dutch “eindig” is pronounced the same in “oneindig” (and German “endlich” the same in “unendlich“)

A

  • Randy Tapson's profile photo
    My guess is that it’s easier to say. They were probably pronounced the same 500 years ago but over time it became easier (lazier) to say 3 short vowels (because they are all the same sound) versus 1 short and 2 long. I’d be very interested in hearing what the old English pronunciation sounded like.
  • Wolfgang Rupprecht's profile photo
    Steven Pinker has a great talk on irregular verbs. In a nutshell certain words when put into a typical sentence are too much of a tongue twister. If the word or phrase is used enough people develop shortcuts to make them easier to say. The interesting aspect that he identified is that if some word falls out of common usage the pronunciation becomes regular again. People forget that they can say it the easier way. His talk is about irregular verbs, but the concept is much more general than that.
  • Kim Nilsson's profile photo

    Two great explanations, which both boil down to the truth and fact that people are lazy and languages adapt over time.

    English spelling is from the 15th century, but pronunciation has changed.

    Norwegian has tried to update their spelling to be closer to the actual use, and also removed duplicate “spelling” of the same sounds.

    Some languages are sponges, and fill up with words from other languages, and either keep the sounds or change them a little, even if they don’t conform to their own language. Others, like Icelandic, create brand new words for everything.

–jeroen

Posted in History, LifeHacker, Power User | Leave a Comment »

NOx value measurement is an indicator for much wider forms of pollution (was: Definitiv ein lesenswerter Artikel, trotz der plakativen Schlagzeile)

Posted by jpluimers on 2020/11/30

Basically:

In other words (and she’ll say that later in an interview): It’s not the NO2 limit we’re talking about here, it’s all the air pollutants we inhale day after day. The discussion about diesel bans and the reduction of NO2 emissions misses the real problem, because if only the NO2 is reduced and not the other pollutants, that does not help much.

Google translated from:

Mit anderen Worten (und das sagt sie auch noch später in Interview): Es ist gar nicht der NO2-Grenzwert, um den es hier geht, es sind die gesamten Luftschadstoffe, die wir Tag für Tag einatmen. Die Diskussion um Dieselfahrverbote und Reduzierung des NO2-Ausstoßes geht am eigentlichen Problem vorbei, denn wenn nur das NO2 reduziert wird und nicht die weiteren Schadstoffe, hilft das nicht viel.

[WayBack] Definitiv ein lesenswerter Artikel, trotz der plakativen Schlagzeile: > Es geht bei dem Grenzwert nicht nur um die Gesundheitswirkung des Reizgases NO2… – Thomas Mueller (dummzeuch) – Google+

–jeroen

Posted in About, History | Leave a Comment »

(German): the mid 1980s stories of calling Peter Norton for free from a German phone booth, and hacking the phone lines that mobile telecom equipment sales vans connected to.

Posted by jpluimers on 2020/11/20

Two great German stories from the mid 1980s posted mid 2020.

They translate fine in Google, so enjoy!

Read the rest of this entry »

Posted in dial-up modems, History, Power User | Leave a Comment »

delphi – What are the list of all possible values for DVCLAL? – Stack Overflow

Posted by jpluimers on 2020/11/17

From a while ago, from notes even longer ago – around 1994 on DVCLAL the Delphi VCL Access License code which is actually a checking logic for determining the SKU (stock keeping unit) or Delphi license: [WayBack] delphi – What are the list of all possible values for DVCLAL? – Stack Overflow

There is no official documentation on this, so here is something from my notes of 15+ years ago:

The DVCLAL is there to check which SKU of Delphi you are using and it varies per SKU.

There are only checks for the Professional (RPR) and Client/Server (RCS) SKUs:

procedure RCS;

procedure RPR;

If they fail, they call this method:

procedure ALV;
begin
  raise Exception.CreateRes(@SNL);
end;

where

resourcestring
  SNL = 'Application is not licensed to use this feature';

Depending on the feature matrix and Delphi version, various components call RPR and RCS in their Create constructors to guarantee a minimum SKU.

Underneath, these RPR and RCS functions call the function  GDAL . Their names are historic and got documented around Delphi 2007:

  • [WayBack] GDAL (Get Delphi Access License)
  • [WayBack] RPR will Restrict to PRofessional license and higher
  • [WayBack] RCS will Restrict to Client/Service license and higher

Historically you had these levels of Delphi editions that could be distinguished this way:

  1. Personal
  2. Professional
  3. Client/Server (or Enterprise)

This excludes Starter and Community (which are “just” Personal), Turbo (which was “just” Professional), Architect and Ultimate, which are “just” Client/Server with extra tools.

A few years ago, another answer got added to that question explaining more details:

I am just adding another answer to this question, for all the people who search the for actual DVCLAL (Delphi Visual Component Library Access License) values, as well as some other information for all people who are curious how stuff works.

1) Like Jeroen Wiert Pluimers said, if you want to check for “Professional or higher” or “Enterprise only” inside your Delphi application/library/package/component, you can use RPR (Require Professional) or RCS (“Require Client/Server”; Client/Server was the name for the Enterprise edition in early Delphi versions) respectively. If the requirement is not met, ALV (Access License Violation) will be called which will raise an Exception with the message defined in SysConst.SNL (S Not Licensed). In English:

Application is not licensed to use this feature

2) In case you want to check for one specific edition, you can use the output of the function GDAL (Get Delphi Access License), which is one of the following (AL1s array):

AL1s[0] = $FFFFFFF0; // Standard/Personal edition DVCLAL value
AL1s[1] = $FFFFEBF0; // Professional edition DVCLAL value
AL1s[2] = $00000000; // Enterprise/ClientServer edition DVCLAL value
AL1s[3] = $FFFFFFFF; // DVCLAL resource not existing

if the DVCLAL resource has an invalid value, GDAL will call ALVwhich will raise an Exception with message SysConst.SNL.

3) In case you want to check the DVCLAL value of a foreign EXE/DLL file (e.g. if you want to write a Resource Editor, decompiler etc), then you’ll have to query the DVCLAL resource directly.

There are only three official values:

Standard:      23 78 5D 23 B6 A5 F3 19 43 F3 40 02 26 D1 11 C7
Professional:  A2 8C DF 98 7B 3C 3A 79 26 71 3F 09 0F 2A 25 17
Enterprise:    26 3D 4F 38 C2 82 37 B8 F3 24 42 03 17 9B 3A 83

4) Just for fun: If you solve the formula 0 = (ROR(a,15) xor a) xor (ROR(b,10) xor b) xor (ROR(c,5) xor c) xor (AL1 xor AL2) you can define any DVCLAL value (tuple a, b, c, d) you want! (AL1 and AL2 are the values in the AL1s and AL2s arrays which describe the desired Delphi edition; ROR is rotate right through carry)

For example, here are alternative DVCLALs which work too:

Standard:      00 00 00 00 00 00 00 00 9B 70 0C 66 6B 8F F3 99
Professional:  00 00 00 00 00 00 00 00 9A DB 73 0F 6A 30 8C F0
Enterprise:    00 00 00 00 00 00 00 00 D8 B2 48 11 D8 B2 48 11

To validate a DVCLAL, you calculate

AL1 := DVCLAL[0] xor DVCLAL[1] xor DVCLAL[2] xor DVCLAL[3];
AL2 := ROR(DVCLAL[0],15) xor ROR(DVCLAL[1],10) xor ROR(DVCLAL[2],5) xor DVCLAL[3];

and look up AL1 and AL2 in the array AL1s and AL2s,

This way you can disguise the edition you have used a little.

5) In the meantime, an official documentation, at least for the functions GDALRPR and RCS, has been published.

6) Of course, everything works for C++ Builder, too.

In the mean time, new posts explaining bits of DVCLAL related resources (like PACKAGEINFO and CHARTABLE) and the TPF0 form/datamodule resource have appeared, of which this is a selection:

jeroen

miscprogs.zip

Posted in Conference Topics, Conferences, Delphi, Development, Event, History, Software Development, Undocumented Delphi | Leave a Comment »