Surfing Modern Web With Ancient Browsers

(note this is a guest post by Tenox)

[Update: A full HTTP Proxy version has been made in this post.]

I spend a fair amount of time working with legacy operating systems. Apart from being obsolete themselves they suffer from a common problem – the web browsers are simply unusable on a present day Internet. You start by getting JavaScript error on google.com and it only gets worse once you go further. Try going to microsoft.com with IE 1.5 or qnx.com with the last version of Voyager. This just doesn’t work. With rapid progression of web standards, the situation will only be getting worse in time. Something had to be done.

Quite a while ago I’ve came across Opera rendering proxy for mobile browsers. This got me thinking. If you could render a web page on a proxy server to a simplified HTML, say 3.x., this would make a lot of web browsers happy! Also, for some unrelated purposes I have been using webkit2png which allows to create a whole web page snapshot in a single png image. What if such image had an image map of clickable regions pointing to the original links?

The idea was born, but was it possible to implement and would it work? Webkit2png was quite far from having all the required functionality. Fortunately though after some additional research I have stumbled upon picidae network. To my utter surprise they actually made all or even more functionality that I wanted in their picidae.py script. All that had to be done to adapt picidae to my purpose was to save the image as a GIF image, generate a simple HTML page with imagemap, an input box and strip all the unwanted stuff.

Webrender.py came to life. It’s a cgi-bin application that resides on a machine in the middle. It renders a gif image and spits it out to the browser together with a simple web page, containing a URL and search input boxes plus the gif and image map.

After some initial debugging and massaging out few bugs the solution worked perfectly! I could finally get the old browsers happily navigate modern websites! Check out some examples:

Internet Explorer 1.5 on microsoft.com

Internet Explorer 1.5 on microsoft.com

 Yes! You can finally browse microsoft.com with IE 1.5 🙂

Netscape 4 visiting netscape.com

Netscape 4 visiting netscape.com

Or go to netscape.com in Netscape 4.x browser. This was impossible just a few hours ago!

How about some other browsers:

QNX Voyager going to qnx.com

QNX Voyager going to qnx.com

 

Mozilla on UnixWare

Mozilla on UnixWare

 

Old Firefox on Haiku

Old Firefox on Haiku

 

CNN on Mosaic

CNN on Mosaic

 

apple-mosaic

Apple.com using Mac Mosaic

 

IBM WebExplorer on OS/2

IBM WebExplorer on OS/2

 

RiscOS !NetSurf on Wikipedia

RiscOS !NetSurf on Wikipedia

 

netscape3

Netscape visiting DNA Lounge

 

NextStep OmniWeb on Reddit.com

NextStep OmniWeb on Reddit.com

 

Enjoy!

Update: A full HTTP Proxy version has been made in this post.

telnettable Altair 8080 clone!

complete with Zork!

Trying 192.222.136.174
Connected to micronick.com.
Escape character is ‘^]’.

Welcome to my Altair 8800 Clone !
Press ENTER…

A>dir
A: ZORK1 COM : ZORK1 DAT : ZORK2 DAT : ZORK3 DAT
A: ZORK2 COM : ZORK3 COM
A>zork1
ZORK I: The Great Underground Empire
Copyright (c) 1981, 1982, 1983 Infocom, Inc. All rights
reserved.
ZORK is a registered trademark of Infocom, Inc.
Revision 88 / Serial number 840726

West of House
You are standing in an open field west of a white house, with
a boarded front door.
There is a small mailbox here.

>

As seen on reddit!

Be sure to check out the web page for a live picture of the machine in action!

Virtual Hands on Labs

(this is a guest post by Tenox)

Jason’s post on VMware reminded me of something that I wanted to post a while back. Not widely known, both VMware and Microsoft offer free and available to anyone, virtualized “hands on labs” on some or most of their products. Don’t think of them as videos or scripted presentations. They are in fact real virtual machines with real software you can play with. VMware HOLs for instance include putty.exe that allows you to SSH to the ESXi host to hack it.

If you don’t want to spend hours installing and configuring all this stuff and just want to learn the essence or gain some experience with enterprise technologies without breaking a bank I highly suggest to check them out. Also VMware labs let you preview upcoming technologies which are not yet available on the market!

VMware HOLs: http://labs.hol.vmware.com/ there also is a community page.

Microsoft, TechEd 2013 HOLs:  http://channel9.msdn.com/Events/TechEd/NorthAmerica/2013?y=Hands-on+Lab&t=available-online (I think you need Internet Explorer to launch them)

Enjoy!

VMWare Vcenter/ESX 5.5

Well it’s been a long while since I used Vcenter, and now it’s gone all web based.  Which is a damned shame IMHO.

But the plus is that ESX can now run nested!

The first stumbling block was installing vSphere.  The 2008r2 server that I’ve been given access to is part of a domain, but I’ve only got local access to the server.  The annoying part is trying to logon right after install.  My Windows user ID doesn’t work, and logging in as ‘admin’ or ‘Administrator’ doesn’t work.  Thankfully I found a hint, to install SQL Management Express to mine the VPX_ACCESS table (my SQL Express instance was \VIM_SQLEXP), and discover that the Administrator logon is

VSPHERE.LOCAL\Administrator

Now with that in place I can now logon to my vSphere.

Screen Shot 2014-02-20 at 7.30.14 PM

The next fun is configuring the ESX VM.

Screen Shot 2014-02-20 at 7.28.07 PM

By default it’ll try to DCHP itself.  Which is great if you have DHCP, but in my small test area on the cloud I don’t have DHCP.

One huge pain I find is that you have to manage version 10 VM’s through the web UI, which let’s face it is dreadfully slow.  Also it looks like you still need the ‘fat’ client to manage storage.  Ugh.

I’ll probably update this more the further along I get.

Alpha Linux on Qemu

I got sent a quick heads up about a post on firstwork systems, where the author details the steps needed to install, and boot up the installer, and then get the rest of it running.

Very cool stuff!

I pulled down debian-5010-alpha-netinst.iso, and extracted /boot/vmlinuz & /boot/initrd.gz .. Decompressed vmlinuz, and booted away!  For anyone who want’s it, my minimal install is here.  All things considered, it works well!

$ ./qemu-system-alpha -hda alpha.disk -kernel vmlinux -append ‘console=ttyS0’ -initrd initrd.gz -L pc-bios/ -nographic -net nic -net user -drive file=debian-5010-alpha-netinst.iso,if=ide,media=cdrom
PCI: 00:00:0 class 0300 id 1013:00b8
PCI: region 0: 10000000
PCI: region 1: 12000000
PCI: 00:01:0 class 0200 id 8086:100e
PCI: region 0: 12020000
PCI: region 1: 0000c000
PCI: 00:02:0 class 0101 id 1095:0646
PCI: region 0: 0000c040
PCI: region 1: 0000c048
PCI: region 3: 0000c04c
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Linux version 2.6.26-2-alpha-generic (Debian 2.6.26-29) ([email protected]) (gcc version 4.1.3 20080704 (prerelease) (Debian 4.1.2-25)) #1 Sun Mar 4 21:08:03 UTC 2012
[ 0.000000] Booting GENERIC on Tsunami variation Clipper using machine vector Clipper from SRM
[ 0.000000] Major Options: MAGIC_SYSRQ
[ 0.000000] Command line: console=ttyS0
[ 0.000000] memcluster 0, usage 1, start 0, end 11
[ 0.000000] memcluster 1, usage 0, start 11, end 16384
[ 0.000000] freeing pages 11:2048
[ 0.000000] freeing pages 2987:16384
[ 0.000000] reserving pages 2987:2988
[ 0.000000] Initial ramdisk at: 0xfffffc0007b28000 (5076756 bytes)
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16272
[ 0.000000] Kernel command line: console=ttyS0
[ 0.000000] PID hash table entries: 512 (order: 9, 4096 bytes)
[ 0.000000] HWRPB cycle frequency bogus, and unable to estimate a proper value!
[ 0.000000] Using epoch = 2000
[ 0.000000] Turning on RTC interrupts.
[4194001.858529] Console: colour VGA+ 80×25
[4194001.860482] console [ttyS0] enabled
[4194001.865365] Dentry cache hash table entries: 16384 (order: 4, 131072 bytes)
[4194001.865365] Inode-cache hash table entries: 8192 (order: 3, 65536 bytes)
[4194001.871224] Memory: 117120k/131072k available (2162k kernel code, 13728k reserved, 3314k data, 304k init)
[4194001.899544] Security Framework initialized
[4194001.900521] Capability LSM initialized
[4194001.900521] Mount-cache hash table entries: 512
[4194001.905404] Initializing cgroup subsys ns
[4194001.907357] Initializing cgroup subsys cpuacct
[4194001.907357] Initializing cgroup subsys devices
[4194001.918099] net_namespace: 1208 bytes
[4194001.920052] NET: Registered protocol family 16
[4194001.926888] EISA bus registered
[4194001.928841] pci: enabling save/restore of SRM state
[4194001.939583] Linux Plug and Play Support v0.97 (c) Adam Belay
[4194001.953255] NET: Registered protocol family 2
[4194001.964974] IP route cache hash table entries: 1024 (order: 0, 8192 bytes)
[4194001.967904] TCP established hash table entries: 4096 (order: 3, 65536 bytes)
[4194001.967904] TCP bind hash table entries: 4096 (order: 2, 32768 bytes)
[4194001.968880] TCP: Hash tables configured (established 4096 bind 4096)
[4194001.968880] TCP reno registered
[4194001.972787] NET: Registered protocol family 1
[4194001.975716] checking if image is initramfs… it is
[4194003.320442] Freeing initrd memory: 4957k freed
[4194003.323372] VFS: Disk quotas dquot_6.5.1
[4194003.323372] Dquot-cache hash table entries: 1024 (order 0, 8192 bytes)
[4194003.325325] msgmni has been set to 238
[4194003.327278] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253)
[4194003.327278] io scheduler noop registered
[4194003.327278] io scheduler anticipatory registered
[4194003.329231] io scheduler deadline registered
[4194003.329231] io scheduler cfq registered (default)
[4194003.330208] isapnp: Scanning for PnP cards…
[4194003.750129] isapnp: No Plug & Play device found
[4194003.767708] Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing enabled
[4194003.769661] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[4194003.782356] brd: module loaded
[4194003.784309] serio: i8042 KBD port at 0x60,0x64 irq 1
[4194003.784309] serio: i8042 AUX port at 0x60,0x64 irq 12
[4194003.787239] mice: PS/2 mouse device common for all mice
[4194003.792122] TCP cubic registered
[4194003.792122] NET: Registered protocol family 17
[4194003.793098] registered taskstats version 1
[4194003.793098] drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
[4194003.795051] Freeing unused kernel memory: 304k freed
[4194003.889778] input: AT Translated Set 2 keyboard as /class/input/input0
[4194011.195438] Uniform Multi-Platform E-IDE driver
[4194011.195438] ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
[4194011.204227] CMD646: IDE controller (0x1095:0x0646 rev 0x07) at PCI slot 0000:00:02.0
[4194011.204227] CMD646: UltraDMA capable
[4194011.205204] CMD646: 100% native mode on irq 28
[4194011.205204] CMD646: IDE port disabled
[4194011.206180] PCI: Setting latency timer of device 0000:00:02.0 to 64
[4194011.206180] ide0: BM-DMA at 0x8040-0x8047
[4194011.596805] hda: QEMU HARDDISK, ATA DISK drive
[4194012.325320] hdb: QEMU DVD-ROM, ATAPI CD/DVD-ROM drive
[4194012.378055] hda: UDMA/33 mode selected
[4194012.378055] hdb: UDMA/33 mode selected
[4194012.379031] ide0 at 0x8050-0x8057,0x8062 on irq 28
[4194012.554812] hda: max request size: 512KiB
[4194012.556766] hda: 4194304 sectors (2147 MB) w/256KiB Cache, CHS=4161/255/63
[4194012.558719] hda: cache flushes supported
[4194012.559695] hda: unknown partition table
[4194012.663211] hdb: ATAPI 4X DVD-ROM drive, 512kB Cache
[4194012.665164] Uniform CD-ROM driver Revision: 3.20
Starting system log daemon: syslogd, klogd.

 

Blackthorne is now freeware!

From DOS ain’t dead: the game was added to battle.net as a free download (1,2).  But you don’t need a battle.net account to download it, just get the ‘executable’ here.

Then unpack with 7zip and rename some files:

$ mv _7770311E01264484BDC66FB81E4EF650 blthorn.exe
$ mv _126448A72F4442D39DCD600746EE09F7 data.dat
$ mv _C987F762EF304955BB86AB432FF6F847 manual.pdf

I set DOSBox to run about 20,000 cycles so it’s not tooo bad.

Blackthorne

Blackthorne

16 and a half years of uptime

As much as the whole ‘uptime’ wars passed with the ever increasing need for patching, this is pretty amazing.

Over on arstechnica a Novell Netware 3.12 server by the name Intel had to be finally shut down after 16 and a half years.  Apparently the bearings in the two SCSI disks had gotten so loud it sounded like a car dragging it’s muffler.

xx days!

6030 days of uptime!

It’s still pretty impressive, and in some ways that was one thing Novell got right with Netware was that it was unstoppable.  Of course their big ‘goof’ was in the application space.  While there was a version of Oracle for Novell Netware, it was a major pain to deal with, and the GUI simplicity of Windows NT pretty much put an end to Netware.

But in some shops they don’t fix it until it’s broke.  Even if it takes a decade and a half.