You are viewing liam_on_linux

Sun, Jul. 27th, 2014, 07:11 pm
And now for something completely different. [Tech blog post, by me.]

[Recycled (part of) a mailing list post: another crack at trying to explain what was significant about LispMs.]

One of the much-ignored differences between different computer architectures is the machine language, the Instruction Set Architecture (ISA). It's a key difference. And the reason it doesn't get much attention is that these days, there's really only one type left: the C machine.

There used to be quite a diversity -- there were various widely-divergent CISC architectures, multiple RISC ones, Harvard versus von Neumann designs, stack machines versus register machines, and so on.

Most of that has gone now -- either completely disappeared, or shrunk into very specific niches.
Read more...Collapse )

Fri, Jun. 27th, 2014, 05:07 pm
Actual civilised modern text editors for the Linux console [tech blog post, by me]

Long time, no post. This is because since April, I have started a new job where I actually get paid to write technical stuff for a living.

(Hint - I'm going to have to change that usericon...)

Anyway, this subject came up in conversation with my colleague Pavel recently. In my department, there are some Vi[m] advocates, at least one Emacs user in the wild (approach with caution), and when I said I used Gedit from choice, I got pitying looks. :¬)

Which gave me a chance to have my usual rant about the deep and abiding nastiness of both Vi and Emacs, which did at least provide some amusement. It also led Pavel to ask, quite reasonably, what I did want from a console/shell text editor that wasn't provided by, say, Joe, Nano or Pico.

I said CUA and then had to explain what CUA was, and pointed at SETedit, which I've linked to before. Sadly, it hasn't been updated in a while. Packages are only for old versions of popular distros.
http://setedit.sourceforge.net/

This led him to look thoughtful and go off and do some digging. He came back with some gems.

Firstly, there's the rather fun Text Editors Wiki, which is not as comprehensive as it might be but has a lot of interesting reading.
http://texteditors.org/cgi-bin/wiki.pl

First, he pointed me at XWPE. It certainly looks the part, but sadly the project seems to have died. I did get it running on Fedora 20 by installing some extra libraries and symlinking them to names XWPE wanted, but it crashes very readily.
http://www.identicalsoftware.com/xwpe/

After some more hunting, he also found eFTE, enhanced FTE. I rather like this. Not all the shortcuts do what I expect, but it works well nonetheless.
http://sourceforge.net/projects/efte/

Incidentally, eFTE seems to be a fork of a no-longer-maintained older editor, FTE:
http://fte.sourceforge.net/

More recently, I've also discovered Tilde. It is currently maintained and has recent packages available. It looks a bit richer than eFTE, but sadly, the Alt key doesn't work in a window. Clearly this is a known issue as there's a workaround using Esc instead, but it makes it 2 keystrokes rather than one with a modifier.
http://os.ghalkes.nl/tilde/

I remain surprised that these things are obscure & little-known. I'd have thought that given how many people are moving from other OSes to Linux, a lot more MICROS~1 émigrés would have wanted such tools.

Sat, Apr. 12th, 2014, 08:22 pm
It's time to bin XP, stop whinging and learn Linux. This is why.

I am already sick and tired of listening to clueless noobs who think they're techies saying "XP is fine, stop worrying" or "I don't do Linux, it's too different" or "I tried it in 2002 and it was rubbish".

Well it's longer since Ubuntu came out (2004) than the gap from Windows for Workgroups 3.11 to Windows XP. Remember the extent of those changes? Well Linux changes a lot faster.

And so what if it's not the same? It's not like changing from a car to a motorbike. It's not that different any more.

To a techie who looks under the hood, who does their own maintenance, sure, it's going from petrol car to electric bike or something. Very little in common.

To someone who uses a desktop, browses the web, plays some simple Flash games or Solitaire etc., occasionally opens a PDF and prints it, or opens an MS Office doc, completes a form and sends it back, stuff like that, then an appropriately-chosen Linux is more like WinXP than Win8 is by far.

But there is galloping fear of the alien in IT. Probably, I suspect, because there are millions of people working in IT who know nothing at all except MS Windows. Everything else is foreign to them, alien and terrifying, and they instantly react like a pod-person in the 1970s Invasion of the Body Snatchers.



And you know what? It's appropriate, because you're all fucking pod people. Stamped out, copies, clones, with no originality and no imagination. You're neophobic.

Anyone who actually knows about computers - real tech people - can handle any OS, any machine. I've troubleshot and fixed problems with machines I have never seen or heard of before; I've sorted out stuff on AS/400 and IBM System/360 mainframes, I've got a DEC PDP-11 talking and doing file exchange with a classic Mac running System 7, and before I walked in, I had never even seen a PDP-11 in my life before.

Software is an office supply, like paperclips. Today it all does much the same, in much the same way.

Imagine the contempt you'd feel for someone who bleated and whinged and complained that they were given a different brand of stapler, or they had to change filing cabinets to one where the keyhole's on the other side. You'd sneer at someone who demanded a training course to help them adjust.

Anyone who only knows one platform, one OS, is not a techie at all, not of any type. If you can't drive half a dozen kinds of computers then you can't drive.

Any competent biker could switch from a 125 trailie to a Gold Wing to a superbike and not kill themselves when they twisted the throttle. They'd go with respect and care and caution, not bleat like an infant because one of the buttons on the handlebars had moved and was a different colour.

So bloody well grow up.

Linux is an answer to a problem. If you have an old XP computer, no it is not safe to use it any more, and yes, you should replace it. But if you get a new one with Win8, it will be very very different indeed. They don't even have a BIOS any more, let alone a bloody Start menu.

And if you don't have the money for a new one, well, an old XP computer won't run Windows 7 properly, no.

But there's a perfectly good alternative that is faster, simpler, safer, more secure, more reliable and it doesn't even cost anything. It'll run on anything XP runs on, works great and all you have to do is get your hands oily. Use Google. Don't think "I know this." You don't. No, not all computers install software by downloading a binary and running it - in fact, that's a fucking stupid design, which spreads malware. Not all computers use a website for updates - that's a fucking stupid design, too.

So grow a pair. Stop whinging. Google "how to install skype ubuntu" rather than downloading and fucking about and breaking it. Download "how to enable GeForce 240 ubuntu 12.04" before you go wasting time. Google "transfer IE bookmarks Firefox" or "libreoffice excel compatibility" or whatever.

Don't assume you know. Assume you don't. You have the entire world's information resource at your fingertips. Use it. Ask the Internet. Ask bloody Ixion.

But stop fucking whinging that "it doesn't run my copy of Anus Invaders 6" or "my crappy plastic £30 printer from PC World doesn't work" and buy a better one. It's cheaper than a new ink cartridge anyway.

Learn. Life is learning. Life is growth. Stop acting like a corpse and live.

Mon, Apr. 7th, 2014, 09:28 pm
Taking a 10,000' view of modern OS design. (Warning: extended rant.)

Frankly, coming from a background in 1980s and 1990s OSes, I think modern ones are appalling shite. They're huge, baggy, flabby sacks of crap that drag themselves around leaving a trail of slime and viscera - but like some blasphemous shoggoth, they have organs to spare, and the computers they run on are so powerful and have so much storage that the fact that these disgusting shambling zombie Frankenstein's-monster things, stitched together from bits of the dead, dropping eyeballs and fingers, actually work for weeks on end.

On the server, no problem, run hundreds of instances of them, so when they implode, spawn another.

It's crap. It's all terrible, blatantly obvious utter crap, but there's almost nobody left who remembers any other way. I barely do, from old accounts, & I'm near 50.

We have layers of sticking-plaster and bandages over kernels that are hugely-polished turds, moulded into elegant shapes. These are braindead but have modules for every conceivable function and so can run on almost anything and do almost anything, so long as you don't mind throwing gigabytes and gigahertz at the problem.

And those shiny turds are written in braindead crap languages, designed for semi-competent poseurs to show off their manliness by juggling chainsaws: pointless Byzantine wank like pointer arithmetic, missing basic types for strings, array bounds-checking, and operator overloading. Any language that even allows the possibility of a buffer or stack overflow is hopelessly broken and should be instantly discarded. The mere idea of a portable assembly language is a vestige of days when RAM was rationed and programmers needed to twiddle bits directly; it should have been history before the first machine with more than a megabyte of RAM per user was sold.

Computers should be bicycles for the mind. They let us take our existing mental tools and provide leverage, mechanical advantage, to let us do more.

We work in patterns, in sets, in rich symbols; it is how we think and how we communicate. That, then, should be the native language to which our computers aim: the logic of entities and sets of entities, that is, atoms and lists, not allocated blocks of machine storage - that is an implementation detail, it should be out of sight, and if it's visible, then your design is faulty. If you routinely need to access things, then your design is not even wrong.

By the late '50s we had a low-level programming language that could handle this. It's unreadable, but it was only meant to be the low-level; we just never got the higher level wrapper to make it readable to mortals. The gods themselves can work in it; to lesser beings, it's all parens.

Now, we have a rich choice of higher-level wrappers to make it all nice and easy and pretty. Really very pretty.

And later, people built machines specifically to run that language, whose processors understood its primitives.

But they lost out. CPUs were expensive, memory was expensive, so instead, OSes grew simpler; Unix replaced Multics, and CPUs grew simpler too, to just do what these simple OSes written in simple languages did. Result, these simple, stripped-down machines and OSes were way more cost-effective, and they won. The complex machines died out.

Then the simpler machines - which were still quite big and expensive - were stripped down even more, to make really cheap, rudimentary 4-bit CPUs for calculators, ones that fitted on one chip.

They sold like hotcakes, and were developed and refined, from 4-bit to 8-bit, from primitive 8-bit to better 8-bit, with its own de-facto standard OS which was a dramatically simpler version of a simple, obsolete OS for 16-bit minicomputers.

And that chip begat a clunky segmented 8/16-bit one, and that a clunky segmented 16-bit one, and that a bizarre half-crippled 32-bit one that could emulate lots of the 8/16-bit one in hardware FFS. And that redefined the computer industry and it was nearly two decades until we got something slightly better, a somewhat-improved version of the same old same old.

And that's where we are now. The world runs on huge, vastly complex scaled-up go-faster versions of a simplified-to-the-maximum-extent-possible calculator chip. These chips grew out of a project to scale-down simple, dumb, brain-dead chips built to be cheap-but-quick because the proper ones, that people actually liked, were too expensive 40 years ago. Of course, now, the descendants of those simplified chips are vastly more complex than the big expensive ones their ancestors killed off.

And what do we run on them? Two OSes. One a descendant of a quick-n-dirty lab skunkworks project to make an old machine useful for games, still today written in portable assembler with richer portable-assembler things written in the lower-level one running on top of it. And a descendant of a copy of a copy of a primitive '60s mini OS which has been extensively rewritten in order to imitate the skunkworks thing.

But these turds have been polished so brightly, moulded into such pretty shapes, that they've utterly dominated the world since my childhood. It's still all made from shit but it's been refined so much that it looks, smells and tastes quite nice now.

We still are covered in shit and flies - "binaries", "compilers", "linkers", "IDEs", "interpreters", "disk" versus "RAM", "partitions" and "filesystems", all this technical cruft that better systems banished before the first Mac was made, before the 80286 hit the market.

But as the preface to the Unix-Hater's Handbook says:

``I liken starting ones computing career with UNIX, say as an undergraduate, to being born in East Africa. It is intolerably hot, your body is covered with lice and flies, you are malnourished and you suffer from numerous curable diseases. BUT, as far as young East Africans can tell, this is simply the natural condition and they live within it. By the time they find out differently, it is too late. They already think that the writing of shell scripts is a natural act.''


- Patrick Sobalvarro

Nobody knows any better any more. And when you try to point out that there was once something better, that there are other ways, that it doesn't need to be like this... people just ridicule you.

And no, in case it's not clear, I am not a Lisp zealot. I find it unreadable and cannot write "hello world" in it. I also don't want 1980s Lisp Machines back - they were designed for Lisp programmers, and I'm not one of them.

I want rich modern programming languages, as easy to read as Python, as expressive as Lisp, with deep rich integration into the GUI - not some bolt-on extra like a tool to draw forms and link them to bits of code in 1970s languages. There's no implicit reason that why the same language shouldn't be usable by a non-specialist programmer writing simple imperative code, and also by a master wielding complex class frameworks like a knight with a lightsabre. It's all code to the computer: you should be able to choose your preferred viewing level, low-level homoiconicity or familiar Algol-like structures. There shouldn't be difference between interpreted languages and compiled - it's all the same to the machine. JIT and so on solved this years ago. There's no need for binaries at all - look at Java, look at Taos and Intent Elate, look at Inferno's Limbo and Dis. Hell, look at Forth over 30 years ago: try out a block of code in the interpreter; once it works, name it and bosh, it's compiled and cached.

Let's assume it's all FOSS. No need for licences mandating source distribution: the end-product is all source. You run the source directly, like a BASIC listing for a ZX Spectrum in 1983, but at modern speeds. If you aren't OK with that, you don't like distributing your code, fine, go use a proprietary OS and we wish you well.  Hope it still works on their next version, eh?

It could be better than we have. It should be better than we have. Think the Semantic Web all the way down: your chip knows what a function is, what a variable is, what a string or array is - there's no level transition where suddenly it's all bytes. There doesn't need to be.

And this stuff isn't just for programmers. I'm not a programmer. Your computer should know that a street address is an address, and with a single command you can look up anyone's address that is in any document on your machine - no need to maintain a separate address-book app. It should understand names and dates and amounts of money; there were apps that could do this in the 1980s. That we still need separate "word processors" and "spreadsheets" and "databases" today is a sick joke.

I have clients who keep all their letters in one huge document, one per page or set of pages per correspondant... and there's nothing wrong with that. We shouldn't be forced to use abstractions like files and documents and folders if we don't want to.

I have seen many clients who don't understand what a window is, what a scrollbar does; these abstractions are too complex for them, even for college professors after decades of use of GUIs. That's why iPads are doing so well. You reach out and you pull with a fingertip.

And that's fine, too. The ancestor of the iPad was the Newton, but the Newton that got launched was a crippled little thing; the original plan was a pocket Lisp Machine, with everything in Dylan all the way down to the kernel.

And the ancestor of the Macintosh was Jef Raskin's "information appliance", with a single global view of one big document. Some bits local, some remote; some computed, some entered; some dynamic, some static; with the underlying tools modular and extensible. No files, no programs, just commands to calculate this bit, reformat that bit, print that bit there and send this chunk to Alice and Charlie but not Bob who gets that other chunk.

Sounds weird and silly, but it was, as he said, humane; people worked for millennia on sheets of paper before we got all this nonsense of icons, files, folders, apps, saving, copying and pasting. The ultimate discrete computer is a piece of smart paper that understands what you're trying to do.

And whereas we might be able to get there building on bytes in portable assembler, it will be an awful lot harder, tens to hundreds of times as much work and the result won't be very reliable.

Mon, Apr. 7th, 2014, 12:37 pm
So this kid on a mailing list is telling the world that Arch Linux is the best ever...

Apparently, it's the ultimate Linux, and with his tweaks to the current development kernel and a custom scheduler, it's insanely responsive, and if you haven't tried it, you're not a Linux god.

So I said...

Um. Good for you. I am pleased you've found a system you find nicely responsive.

Me, I just want something simple, low-maintenance and reliable, with a
good polished rich UI, that does what I need. The less work I have to
do to achieve this, the better the OS is, for me.

Yours sounds very high-maintenance indeed and I'm not remotely
interested in going to all that work.

I don't consider myself a Linux god. I am reasonably clueful. I've
been using Ubuntu since it came out in 2004, SuSE for a couple of
years before that, Caldera for a couple of years before that. That
followed a good few years on NT 3.51 and NT 4, which followed Windows
95. I switched to Windows 95 from OS/2 - I was a keen OS/2 user from
2.0 to 2.1 to 3.0. It really was the best 32-bit OS for PCs back then.

Before that, at work, I built, ran and supported servers running SCO
Unix and before that SCO Xenix. My Unix experience goes back to about
1988, which is when I switched over from the VAX/VMS I used at
University.

I have also used IBM AIX and SUN SunOS and Solaris, but not much.

Plus Novell Netware - I was a bit of a guru on Netware 2 and 3 but
wasn't so impressed with Netware 4 and have barely used 5. I wrote a
masterclass on building a small-business server with Red Hat 6 for PC
Pro magazine in the late 1990s. I've also reviewed about 20 or 30
Linux distros over the years, so I feel I know the Linux landscape
well.

I'm also very interested in alternative (non-Unix) OSes, especially
for the PC. BeOS is my personal all-time favourite.

Off PC hardware, I'm also pretty good on Mac OS X and classic Mac OS,
before thzat Acorn RISC OS and Psion EPOC and its successor Symbian,
and have some knowledge of AmigaOS, Atari GEM (I was peripherally
involved in the GPL FOSS FreeGEM project to revive PC GEM; my name's
in the credits of FreeDOS, to my startlement.)

I was definitely an MS-DOS guru back in the late 1980s/early 1990s and
supported all the major networking systems - 3Com 3+Share, 3+Open, DEC
Pathworks, AppleShare, Sage MainLAN, Personal Netware, Netware Lite,
NT Server from the very first version, etc.

So I guess you could say that my knowledge is broad but in places
shallow, rather than very deep in any one area, such as Linux. :-)

But I feel really sorry for you if you think that /any/ Linux system
is genuinely fast and responsive. It's not. It's a huge lumbering
sloth of an OS. You really need to try BeOS, or failing that Haiku, if
you want to experience what a fast responsive OS on PC hardware feels
like.

Sadly, there just weren't the apps for it, and no VMs in those days.

And for something vastly more responsive than Haiku, try Acorn's RISC
OS. It's the original OS for the ARM chip that these days struggles to
run bloated leviathans like Apple iOS and Android. RISC OS is the
single most responsive system I've ever used, because the entire core
OS - kernel, GUI, main accessory apps - fits into about 6MB of Flash
ROM.

No, that's not a typo. Six megabytes. Complete Internet-capable
multitasking GUI OS with network clients etc.

It runs on the Raspberry Pi and RISC OS itself is now shared-source
freeware so you can download it from Risc OS Open Ltd. for nothing and
run it on a £25 computer - on which it performs very very well, many
tens of times faster than a lightweight cut-down Linux such as
Raspbian.

So, no, not a Linux god, but, you know, not a n00b either.

Try some of these OSes. Prepare to be surprised. You might enjoy the experience.

Most of them have nice friendly GUI text editors, too, way friendlier
than Vi /or/ Emacs. ;-D

Wed, Mar. 26th, 2014, 06:36 pm
A long-forgotten nightmare: hard disk size limits under MS-DOS

From this Reg forum...

No, the DOS limits were /much/ earlier and older.

From old old memory:
MS-DOS 1.x didn't support hard disks.
MS-DOS 2.x did, but just one, of up to 10MB.
MS-DOS 3.0 supported a single hard disk partition (per drive) of up to 32MB.
MS-DOS 3.2 supported two partitions per drive, so 2 x 32MB.
MS-DOS 3.3 supported one primary and an extended partition containing as many 32MB "logical drives" as you wanted. (I built an MS-DOS fileserver with a 330MB hard disk once - it had drive letters C:, D:, E:, F:, G:, H:, I:, J:, K: and a leftover 11MB L: drive. Messy as hell but all you could do without 3rd party "disk extenders" such as Golden Bow's one. The server OS was 3Com 3+Share if anyone remembers that.)

Lots of vendors implemented hacks and extensions to allow bigger disks, but they were all mutually incompatible and many failed to work with some 3rd party software. Of course, anything that directly accessed disk data structures, like a defragger or a disk-repair tool such as Norton Utilities was 100% guaranteed to catastrophically corrupt any such extended disk setup.

The one that caught on was Compaq DOS 3.31. It used an extension of FAT16 that allowed bigger clusters - still just 65,535 of them, but multiple 512 byte sectors per cluster, permitting bigger partitions. The max cluster size was 16KiB so the max disk size was 65535*16KiB = 2GiB.

This is the one that IBM adopted into MS-DOS 4 and it became the standard. However, disks over 512MB used inefficient 8KiB clusters - i.e. files were allocated with a granularity of 8KiB and even a 1 byte file took 8KiB. An 8.0001KiB file would take 16KiB.

This became disastrous over 1GiB where the granularity was 16KiB. Roughly 20-30% of disk space would be wasted because of this granularity as inaccessible "slack space".

This was only fixed in Windows 95 OSR2 with FAT32, which permitted huge disks - up to 2TiB - with much finer granularity.

But all of DOS 4, 5 and 6.x permitted disk partitions of up to 2GiB.

Mon, Mar. 3rd, 2014, 05:14 pm
How much faster are 7200rpm drives than 5400 ones? Really?

No, honestly, I do have a real reason for asking.

As per my previous post, I have just upgraded my big laptop from 2 x 250GB drives to 120GB SSD + 1TB HD. This, clearly, leaves me with 2 spare drives. One I've put in a Firewire case I had - it's a gift for a friend - but the other is going begging, as it were.

Now, I planned to put it in my small ultraportable - a Thinkpad X200s which has a 160GB drive. However, I now discover that it's a 7200rpm drive.

So the question is, will I be able to notice the performance degradation? I have little experience with such things - is it dramatic or marginal? It's a fairly fast laptop (C2D, 4GB RAM) so it doesn't struggle...

Fri, Feb. 28th, 2014, 11:26 pm
Suddenly Speed Dominates (look at the initials, you'll work it out)

So, with some of the money from the Great Decluttering I am doing, I bought an SSD and a 1TB hard disk for my big desktop-replacement laptop. It's a big beast & takes 2 x 2.5" hard disks.

I've put my root folder on the SSD and /home on the HD, and merged all the stuff from my Windows home directory and data directory and Linux' /home into one big shared NTFS partition.

For Ubuntu, all I had to do was boot off a recent CD and reinstall GRUB and everything worked. (OK, I had to manually point it at my new swap partition.) These UUID things are excellent.

Windows required finding an install DVD, starting off it and doing a "Startup Repair" but then it was happy.

With Win7 the difference is not all that dramatic. It's quicker, sure, but still takes tens of seconds.

But Ubuntu... *wow*. From GRUB menu to login screen in about 2-3 seconds. From there to desktop in ~1 sec.

Stunning. I had heard it was good, but those poor Windows users just have no idea.

Wed, Jan. 29th, 2014, 12:26 am
Computers for Cynics: a wise, wry, biased (but fair) history lesson from one of the great prophets

Ted Nelson, creator of Project Xanadu, widely-hailed as the inventor of hypertext. Xanadu never quite happened; what we got was a very watered-down version, the WWW.

Nelson's written several books, none of which I've read - but now, I really want to. In a series of bite-sized, sub-15-min videos, he presents his jaundiced but remarkably perceptive and insightful overview of the history of the personal computer - he's been there since the start.

Videos 0 through 4 are excellent high-level overviews. Number 5 is on hypertext, his specialist field, and he starts letting his bias show a bit; numbers 6 and the concluding N are, with the best will in the world, rants - but amusing ones and still informative as anything you could hope to find.

Strongly recommended viewing.

Read more...Collapse )

Thu, Dec. 19th, 2013, 02:24 pm
Behind the story: "why tablets are killing PCs" - no, really, they are. Here is how.

The title is from this Guardian story by Charles Arthur: 'My iPad has Netflix, Spotify, Twitter – everything': why tablets are killing PCs.

There are a whole bunch of competing factors here which seems to baffle many observers. This isn't an encyclopaedic list, but...Read more...Collapse )
"... a new scientific truth does not triumph by  convincing its opponents and making them see the light, but rather because its  opponents eventually die, and a new  generation grows up that is familiar with it." (Max Planck, 1949.)
Well, IT is the same... only the old techies don't need to die, they just need to be promoted into management.

10 most recent