Today we celebrate one year in space

On this day exactly one year ago we launched the world's first hypothetical Internet space mission.

Project Proxima is a light-speed space mission to the Proxima Centauri star system. The aim is to create a teaching tool that helps explain the vastness of interstellar space.



Today, Proxima has travelled over nine trillion km - that's 23% of the way to Proxima Centauri.


A lot has happened in the time since launch: the conservative party won the UK election; we have said farewell to countless well-loved legends of music and screen; Ireland voted for same-sex marriage; liquid water was found on Mars; all countries agreed to reduce carbon emissions; the WHO announced an outbreak of Zika virus, to name a few.

You can get involved in the mission by following on Twitter, or tracking the progress on the website.

You can also become an official supporter and sign up for email alerts.

Here are some nice things people have said about the project:

An interesting thought experiment, wish I'd heard about it before launch.

Travel to Proxima Centauri was (the) theme in Carlsagan Contact nook which my self and my daughter loved very much. To relive the experience is exciting.

Supercool!! Can't wait for launch!

Some other popular Project Proxima posts from last year:


Getting started with BBC Micro:bit

I have finally found time to play with my BBC micro:bit computer.

The micro:bit computer is an embedded computer given away by the BBC and comprises of an ARM processor, 25 LED matrix, accelerometer, and two input buttons.  It has Bluetooth support and connects to your PC for programming although it can also be powered by an external battery.  You need to plug it in through USB to program it through the micro:bit website.

Micro:bit connected to PC through USB showing the 25 LED programmable matrix.

In my first attempt at coding for the micro:bit I have created a program that lets you find the temperature by pressing button A, and the relative light level by pressing button B. Pressing both buttons at the same time shows a (somewhat disappointing) bar graph of the current temperature.

Source code.

I've used Microsoft Block Editor to write this code to keep things simple.  Micro bit can also be programmed in Python.  Ultimately you code needs to be compiled into object code to run on the micro:bit, but the website at www.microbit.co.uk handles all of this for you.

My second program is a counting ticker, useful next time you are herding sheep and need to count them back into their pen. Press button A to add one to the total.  Press B to deduct one from the total.  Shake the device to reset to zero (this is actually very easy to do by mistake).  Press both buttons to show the current count total.

Source code.

Program number 2.
That's all I have achieved for now, but I look forward to experimenting with some more challenging programs in the future.  I think I will look into the Bluetooth capabilities or research other devices that can connect with it.

In summary, the micro:bit is a fun device, although it does not compare well to the SenseHat for Raspberry Pi, or the original BBC microcomputer.  SenseHat with Raspberry Pi can pretty much do everything that the micro:bit can do with the added advantage of a much larger LED matrix (and a few extra sensors thrown in), and the BBC microcomputer is, of course, legendary.

Staying with us? Good, then you might like these varied posts on the Raspberry Pi computer, or the BBC Microcomputer.

Playing audio through Raspberry Pi

My Raspberry Pi and my BBC Master both share a 32 inch TV screen.  The problem is that I wish to continue using my Pi as a media player whilst simultaneously working with the BBC microcomputer (which doesn't play media).  In its default setting the Raspberry Pi sends audio through the HDMI to the TV and so all is very quiet when I switch to the BBC computer on SCART.

The Pi has an audio output however nothing happens when you plug an audio jack in.

A little Linux is required:


    lsmod | grep snd_bcm2835


Followed by:

    amixer cset numid=3 1


(To return to the default settings change the final '1' to '2'.)


I can now use the Pi as a media player, whilst simultaneously using my BBC computer as a productivity machine.  My music media files are stored on an external hard drive on my home network.  Altogether I am a happy nerd.

I cannot, however, force the audio through the headphones audio jack when using RISCOS on the Raspberry Pi.  I have tried changing the config.txt file by following online instructions but so far have had no luck.  If anyone knows how to do this then please get in touch.


My BBC Master 128 projects part 04

You will have been following my BBC Master computer projects series religiously.

I am trying to write some apps to turn my 30-year-old BBC microcomputer into an everyday productivity machine.  Sure, it can't handle multitasking and there is no network connection, but it is still an incredibly sophisticated machine, relatively speaking.

Today I wrote the start of the time app.  It is named 'Timely' and features various timing functions:

  • clock
  • timer
  • countdown
  • alarms
All in glorious teletext graphics.

The BBC Master has a battery-backed CMOS RAM clock, something my model 'B' computer lacked. This is an incredibly useful thing as it means that the clock stays accurate even when the machine is switched off. This might not seem that impressive when compared to modern machines, however it does make this thirty-year-old brute something of a useful machine.

Timely clock showing current time, date and a friendly message.
The timer function counts up in seconds. You can flip to the timer display by pressing button '2' and reset the timer back to 0000:00:00 by pressing SHIFT+'2'. You can switch back to the clock display by pressing '1' without affecting the timer.

The Timely timer clock 31 seconds after launching the app.
The count-down function works like the (count-up) timer, except that it is access used button '3' and reset using SHIFT-3.  You can specify the duration of the countdown from anywhere from 1 second to 1000 hours (numbers larger than this causes an overflow error, which although I think I can solve, it is unlikely that I will want to set count downs for times accurate to a second over a duration longer than 41 days!).

Setting a Timely countdown.  The countdown will generate an alert when it has finished, regardless of which mode you are currently in.
I have implemented five different user-programmed alarms.  Alarms can be set for any minute of any hour throughout the thrird Millenium.  Alarms generate an alert when they complete along with a custom message.  The difference between 'alarms' and 'countdowns' is that the alarms are saved on disk between uses of the clock.  The only problem is, of course, that the alarm will only sound if the app is actually running at the time!

Setting an alarm.
What's next?

I would like to implement:
  • hourly chimes;
  • calendar functions;
  • summary of items that are 'due' from the 'Listy' app;
  • other time/date functions, eg date of next Easter, or number of days until a due date; moon phase, position of Halley's comet, etc etc.


Well, that's it for now. You might want to roll your eyes and scroll down to this image of my floppy disk collection.

For computing history fans, these are double-sided, double-density 5 and a quarter inch disks.

The BBC disk filing system allows for up to 31 files, or about 200KiB of storage, whichever happens first.
Still scrolling down?
You might like to read about my chatbot project, or my English dictionary project, or just want to play an adventure game.

My BBC Master 128 projects part 03

I have been writing software for my refurbished BBC Master 128KiB microcomputer. The aim is to convert it from a retro gaming jukebox to an everyday productivity machine.

In previous posts I discussed my list and reminders app - Listy.

Today I finished the calculator app.  Mathematical expressions can be entered and calculated at the command line.  Values can be stored in 26 variables 'a' through 'z' and the previous result from the accumulator can be used in an expression by substituting the '@' symbol as a variable. The values of all variables including the accumulator are automatically stored on disk between calculations so they are always available the next time the system runs.

All in glorious teletext graphics.


The welcome screen.


I am rather pleased with the result, although there is some work to do regarding the error reporting as I have only implemented one error message for the case of the accumulator overflow.

Also, it would be nice if I could store functions as well as the value of an expression in a variable.

My current project is a general time-keeping app.  I want a clock, timer, countdown, reminder and alarm system.  So far I only have the clock implemented.

This photo is a shot of the clock app running on my BBC Master 128. Those digits are about 10 cm tall on the display.
In order to get some really big text I have modified some code I found in The Century Computer Programming Guide for the BBC Micro, an excellent guide to programming for the BBC Computer systems, by Professor Peter Morse and Brian Hancock, with code from P.Dilley for the large 64x64 pixel characters.




An excellent guide to programming the vintage BBC micro computer.

Are you looking at ME?
What's next?

More nerdy posts coming soon.

Still awake?  You might like to play an awesome adventure game, or read about my Raspberry Pi data-logging adventures.

My BBC Master 128 projects part 02

So, recently I bought a vintage BBC Master series microcomputer and set myself the task of turning it into a productivity machine.

My first app - Listy - is a note-taking and reminders app.  Although there are a few bugs that I still need to iron out, this app is almost complete.  Listy lets me add tagged notes with reminder dates.

All in glorious teletext graphics.


Most of the functions are accessible through one of the special symbols on the computer keyboard. Operating System commands are also accepted.  Oh, and yes, I am aware that the date is incorrectly set in the CMOS.

Here is an example of a note "Electricity" which will remind me to check my meters on the current due date.  I only wish that the CMOS calendar was not set incorrectly.

My latest project is a command line calculator.

It allows me to enter a mathematical expression and evaluate it.

Here we see the value 47 in the accumulator.  The previous expression resulted in an error.

The app will allow me to store values in up to 26 variables (a through z), which will be stored on disk for next time the program runs along with the value in the accumulator.

Variables can, of course, be used in the expressions.

It would be possible to set variables equal to expressions, such as y = f(x) so that y would change as x changes, however I have not implemented this in the first iteration in order to avoid dastardly circular references from melting my 'beeb'.

Well that's it for now.

I'll be back with more BBC microcomputer adventures soon; hopefully after I've fixed the CMOS date problem.

Still with us? Read about my other adventures with 25-year-old operating systems

My BBC Master 128 projects part 01

I have owned a refurbished BBC Master 128 computer for just over one week.  In order to justify its position as pride of place on my desk, I am determined to write some apps for it that I will be able to use every day.  Thus turning this vintage games machine into a productivity machine.

The first program is a note-taking app called 'Listy'.

Listy allows me to add notes of up to 256 characters, sorted alphabetically.  The notes can be searched by content and 'tagged'.  Notes are automatically saved to disk.

Listy displays all its lists in glorious teletext graphics.

An early version of Listy showing the help screen, banner and command line running on vintage hardware and captured on my Lumia 950.
Source code showing the insertion sort algorithm. This puts new records into the correct place alphabetically.

Continued code for the insertion sort.

Further routines used by the sort algorithm, also showing the code for the blue banner at the top of the screen.
Algorithm for finding a record by name using binary search.  Binary search is a VERY fast algorithm for finding a single record typically requiring less than eight checks before a record is found (or not).

Algorithm for displaying word-wrapped text on the screen.

Current Progress

I am currently working on Listy 2.1 which has been modified to allow for shorter commands.

Records are created/modified using the command: +<name>.

Records are found by simply typing their name <name>.

A full readout of all records is achieved using the command: @.

All records displayed alphabetically is achieved using the command @keys.

Still to do

Deleting records using the command: -<name>.

Searching for records by content: ?<search term>, or by tag #<search term>

Future work

I want Listy to be able to sort records by 'date created' and by 'due date'.  This will require minor modification to the insertion sort algorithms.  I also want Listy to display records that are 'due today' when the application first loads.

Currently Listy saves all lists to a single file on the DFS floppy disk. It would be useful to be able to specify a filename to allow for multiple lists.

Well that's all for now.  If you are still awake then you might like to read my other BBC Micro posts, or just some random Programming posts.

My BBC Master 128

I recently bought a new refurbished BBC Master computer supplied by the lovely people at www.retroclinic.com.

The BBC Master is a thirty-year-old microcomputer from Acorn that was popular in school and homes throughout the late eighties. Use of the BBC computers is as synonymous with the eighties as with hoola-hoops, denim jackets, He-man, Saved by the Bell and Margret Thatcher.  This computer truly is a relic of the cold war.

The Master was an improvement on the original BBC model 'B' in that it provided a mighty 128KiB of RAM, enough to power the high-resolution graphics modes available on both hardware and still have available space for your program.

My BBC Master (running Acornsoft Elite) with disc drive, Raspberry Pi and modern PC.
The computer arrived in excellent condition.  Retroclinic have done a wonderful job in refurbishing the machine.

And so, with social life cancelled, I have spent the weekend exploring what my 'beeb' can do.

The package included a dozen or so games on disc, including Repton, Elite and (possible the greatest of all...) Baron.

The murderous 8-bit skeleton army from Baron.

The internals of the machine also contain a couple of games: Acorn's own 'Pac Man' clone 'Snapper' and 'Chuckie Egg'.  They never made 'Chuckie Egg' the movie, which is a shame, as the late, great, David Bowie would have made an excellent killer-duck boss.

ROMS include among others:

  • VIEW (Acorn's word-processor)
  • ViewSheet (Acorn's spreadsheet program)
  • EDIT (Text and programming-code editor)
  • CMOS RAM (battery powered Y2K-fixed settings and internal clock)
My projects

If the BBC Master is going to earn it's position as pride of place on my desk, then I want to turn the computer into an everyday productivity machine.  Playing old games for nostalgia's sake is fun, however I can do that using emulation.

So I intend to write a suite of programs for everyday use.

First of all a note-taking/list app.  Then a calculator program and finally an alarm clock/calendar app.

The BBC Master has no access to the network and only a 200K disc for storage.  Also I don't have access to a library of program code - everything has to be coded in the original beeb BASIC.

Let's go!

Still awake?  You might like these other nerdy posts:

My #chatbot is online

He's ready! Warts and all.  Mac, the superdecade games chatbot is online and ready to talk to you.

Another thrilling conversation with Mac.
Ok, I admit it, he doesn't say much for now, but I promise that I'll update his database with more topics to improve his conversation skills as time goes by.

Feel free to go and chat, or steal my code, whatever.  Any feedback then do get in touch.

Yo

This is my new favourite app!

Yo.

Yo is a social media app that allows you to send the letters 'Y' and 'o' in that order to your contacts.  Yo.  You can also send links and your location, and there is an additional 'yo status' that allows you to display your status in one emoji.

It is described by the developers as a "a single-tap zero character communication tool".

It has been describe by my friends as "annoying", "this isn't Facebook chess", and "this app has a half life of 5 hours: in five hours time the chance of me deleting this app increases to 50%"...

... but I think that they are wrong.

Not all messages we send need to be essays.  "Text me when you get back".  OK, I will.  I'll send you a 'yo'.

Yo allows you to convey meaning without actually saying anything.  Yo REDALERTISRAEL to get a yo whenever a missile is launched from Gaza.  Subscribe to LARGEEARTHQUAKE to to a yo whenever there is an Earthquake larger than 6 on the Richter scale.

Yo.

You need to tell your friend where you are. Send a Yo with your location.

In a time when we are drowning in email, Yo is a very refreshing service.

If This Then That...

You get more power to your yo when you integrate with a service like IFTTT.  IFTTT let's you set triggers that invoke some sort of action.

A custom IFTTT.

With IFTTT I've got my yo history saved to my Dropbox.  When I get a yo I also get a twitter notification send to my Microsoft band 2.

Send me a yo now (my username is SUPERDECADE) and you will see it gets tweeted to my timeline.

You can send a yo to IFTTT to act as the trigger for almost any action.  Send a yo - it turns on the lights in your house.  Send a yo - it creates a new page in OneNote. Someone posts a picture on Instagram with a specific hashtag - you get a yo.  The list is almost endless.

IFTTT works with the yo status app as well.  Here I am working on automating my status.  At night it shows me as asleep.  When I wake up, the emoji is a cup of coffee.  I post something to my pocket then it shows me reading.  It even changes to a birthday cake on my birthday.


I think that I have only just scratched the surface of Yo.  When you think of this app as a trigger it becomes much more than an 'annoying' messaging app that you will uninstall in five hours.  There is also a developer API for more fun and games.

And remember a 'yo' can mean anything!

Yo.

Send a yo to me now.  I am SUPERDECADE, then roll your eyes and look at some of these other posts. #yo

Susan updated to version 1.1.0.38

There's a new update to Susan - the ASCII-based personal assistant for Windows.

She now has a timer feature.  Simply start the timer with the 'start' command.  The timer will count up in seconds, minutes and hours.



Older versions of Susan will prompt you to download the new version.  If you are new to Susan, and you want an ASCII-based personal assistant app then follow the links below.

Go to the main Susan page now.
Find other Susan-related posts.

Noteworthy note apps for #Windows

When it comes to taking notes on Windows, OneNote is the king, however I have come across a couple of apps recently that are well worth looking at if you find yourself regularly using your devices to jot down memos or ideas.

The first is Microsoft's own OneNote competitor - Plumbago, and the second is Action Note.

Plumbago

With Plumbago (let's ignore the stupid name for now) Microsoft declare that it 'is time to retire pen and paper'.  I wholly agree with the sentiment, however OneNote is still the winner.


Making notes on my Surface Book

Plumbago features hand-writing smoothing which admittedly does little for my horrendous scrawl.  You can create limitless notebooks and each features 25 sheets of paper.  I am not as yet sure how you create more sheets of paper should you need them.  It does however allow your notes and drawings to span several pages.

A little ditty I wrote.

There are several different types of paper, unfortunately, only one type may be applied to one notebook at a time.  You get several different types of lined paper, squared paper, musical notation and even some for fashion designers.  I probably wont need this.  There is at present no isometric paper - hexagonal paper would be a real bonus.  You also can not rotate the paper as you write as you can with real paper and some good drawing apps such as Autodesk Sketchbook.

Syncing across devices is rather strange.  My notebooks sync happily between my surface and my desktop, however my Samgsung slate tablet seems to have its own local notebooks and wont sync with the others.  There seems to be no settings to decide where your saved notebooks are stored.

Furthermore, there is no support for Windows phone.

At present, despite some nice features, Plumbago is not as good OneNote when it comes to being a reliable note-taking app, nor does it beat a huge number of drawing apps available for Windows.

Action Note

For taking quick notes, there seems to be no better app than Action Note.  Action Note integrates with your action center allowing for fast access to your notes.  In this respect it simply does beat OneNote, which can take some time to load up and then you need to navigate through your tree of OneNote folders.

Action Note on my awesome Lumia 950 running in my action center allowing for very fast note taking.

Action Note on my Surface Book.

Action Note (Pro version) does everything you would expect or a modern Windows app.  It syncs between your Windows devices.  There is the option to add files or screenshots from other apps.  You can pin notes to your desktop as live tiles.  The interface has three themes - the 'dark theme' shown in these images.  One my Lumia 950 there is support for voice-to-text and read aloud your notes. You can also scan QR codes and keep their contents or links for later.

Overall this is a really good app that I will use regularly. Plus one geek experience point for Benjamin Sautermeister.

Still awake? 
 Check out some other cool apps from other developers
or jump to a random article.

Some improvements to my chatbot

Today I made some improvements to 'Mac' my chatbot engine. It is still too early to release yet, but here are the new features:

The chat history is in reverse order. The latest response is at the top.

1. Mac can now remember the values of variables stored within the user's input. In the above example, it can match the variable <<name>> from the user's input "Some call me Tim" and "My name is Bob".

2. Mac has can have two different responses to user input depending on whether a condition evaluates as true.  Conditions are expressed in the format ( [conditon] AND [condtion] ... ) OR ([condition] AND [condition ] ... ) .... So, for example if you tell him your name is something different to what he thinks, you get a different response.

Well, that's it for now, but stay tuned for more chatbot developments - and a live version plus code for you to play with - coming soon!

Sharing a usb drive to chromebook, raspberry pi, Android and Windows 10

I noticed that my new home router comes with a USB port. I figured that it was possible to connect an external hard-drive and use my router as a home file server. This means that I will be able to share files between my Chromebook, Raspberry Pi, Android tablet and Windows machines.


Here are the steps I used by device.

First steps
Plug in your usb drive and check the admin settings on your home hub.  I get there through the default address of my router which is 192.168.1.254 and yours is likely to be similar.  It is a good opportunity to change the admin password at this stage.

In Windows 10
Access to the shared network drive is as easy as opening the file explorer and typing the address into the address bar eg //192.168.1.254

Your files are now ready to be accessed on all your devices.


On a Chromebook.
It would be useful to access my PC files on my Chromebook as well.  I used File System for Windows.


Your shared files are now available in the ChromeOS File app.

On Raspberry Pi under Raspbian

1. You need to mount the network drive into the Raspbian file system.  To do this you need to have cifs-utils installed.  My Raspberry Pi 2 came with this pre-installed.  You can check whether it exists or not by running the following command: dpkg -s cifs-utils

2. Should you need it, you can install cifs using the command sudo apt-get install cifs-utils 

3. Next create a directory on your pi for where you want to mount the network drive: sudo mkdir -p /media/network/public

4. You need to edit the etc/fstab file in order to mount the network drive. You may need to give yourself permission to do this, so navigate to your /etc folder and type chown pi: fstab (where pi is your username).

5. Now open the etc/fstab file in your text editor and add the following single line:
   //192.168.1.254/usb1 /media/network/public cifs defaults,rw,username=pi,password=yourpassword,domain=domain 0 0

  Note that the first part is //IP ADDRESS OF ROUTER/directory name of network folder
 If your network folder has any spaces in the name, eg "My Documents", then replace the spaces with \040, eg My\040Documents.
 The second part is the path to the folder you created in part 3.
 You will need to put in your own username and password .

6. Now mount the drive using sudo mount -a


Android

There is no single file explorer app for Android, but many of them allow you to access network drives. I use ES file explorer which has a nice 'search' feature which will find your network drive in a few seconds. You can also pin your network drive to your desktop for easy access.

Accessing your network drive in Android

Windows Phone

I have downloaded Metro File Explorer to access my home network files on my Lumia 950.


That's all for now (I've run out of devices to try). It's time to backup to my file server and tidy up a bit.

Label