Things Which Annoy Me About Modern Computers

I'm annoyed that we don't have something like the Amiga anymore. A computer that doesn't give you apps, but instead gives you primitives that you can combine in different ways to be creative and make art. Okay, the Amiga wasn't quite like that, but it had the spirit and desire to become that.

I'm annoyed that we can't make a computer do things that we want without diving into "full programming". I can't make something like remind me every morning at 6am to record my weight, and every hour after that if I hit the snooze button, without needing a full language.

Anything a full program can do should be possible from end user control as well.

I'm annoyed that computers break. The computer shouldn't break. If you put it into a bad state there should be a way to recover without wiping it. Recoverability and resilience should be a part of the OS design.

There shouldn't be apps. Instead there should be modules which you can get from a crowd-sourced repository.

No one should ever be able to take data or modules away from your computer once it is there. ie: module can never be 'unpublished'.

For making art and games there should be a built in standard like canvas or three-js which allows you to create amazing graphics. There should be an audio standard like web audio for you to create amazing sound. Building a midi synth should just be a matter of a few lines of code. Something like:

oscillator(wave type: sinewave, frequency:  $midinote) 
=> MyTone
adsr(attack:0.1s, decay:0.4s, sustain:0.5, release:0.5s, input: MyTone)
=> MySynth
midi(target:MySynth)

Making a chart should be as simple as

chart(data:data, x:data.date, y:data.sales)
(@y=@x^2) => MyEquation

MyEquation is an expression with free variables. It is equivalent to a function with x as the input parameter and y as the output parameter.

graph(equation:MyEquation)

graph has an input parameter of equation. the type of this parameter is a function with x as the input parameter and y as the output parameter.

Your whole operating system should be a database with simple queries. You should be able to create an address book with this:

query(type:'contact') => pick('first') => sort(by:'first', ) => VirtualList

I should be able to use the camera on a remote Android phone as a time-lapse camera, pipe it to a local data store, append to a video, and scan for intruders. all live display:

# take a picture every 60 seconds
RemoteDevice({id:'a8u234asdf'})
=> getCamera(type:BACK)
=> getFrameStream()
=> frames
function snapPictures
RemoteDevice({id:'sfasdf'})
=> getCamera(type:BACK)
=> takePhoto()
=> movie.append()
repeat(every:60s, do:snapPictures)

Okay, so maybe that is a little bit of real programming but it's simple enough that power users could figure it out, and make it very easy to share with others.

This stuff shouldn't be hard. It should be trivial. And it should be built it. It's your right as a computer owner.

Talk to me about it on Twitter

Posted May 9th, 2018

Tagged: rant