Speculating about SteamOS

It’s been a tremendously long time since any new content appeared here (I’ve even been considering shutting this web log down) but today I find myself eager to share some thoughts!

What could stir me from my slumber? Somewhat surprisingly I find myself uncharacteristically excited about a gaming platform and, as I no longer share an office with fellow nerds, I have no recourse other than to gush at the internet.

Despite not being a huge gamer (I have likely bought fewer than half a dozen games in the last two years) Valve’s recent announcement of SteamOS has me rather excited. There are three main paths along which my mind wandered when pondering what SteamOS could be:

Firstly, as a self-confessed operating systems nerd (and someone who has spent most of his career on the fringes of that world) I’m excited to see how Valve have architected their Linux-based OS. Whilst it’s possible that they could just choose to ship a spin of an existing Linux distribution (such as Ubuntu or Fedora) I’m hoping they’ve been a little more adventurous.

Thinking about SteamOS for a few minutes whilst browsing their announcement page a system more akin to Android in many ways comes to mind – a highly customised OS platform tuned to the needs of an entertainment device, rather than a stripped down generic OS. I’m certainly not drawing the comparison with Android because I’m expecting Valve to have written huge swathes of OS components that make SteamOS a different beast to a more traditional Linux, quite the opposite – I fully expect them to make use of the excellent Linux userspace which is readily available and widely tested. It’s how they put their OS together and structure things in terms of distributing software, updates and security (more below) which I expect to be different. Particularly as there’s unlikely to be any need to consider ‘legacy’ applications.

It’s perhaps unsurprising that I half-hope, half-expect Valve to be using the tools of the Yocto Project to develop their custom Linux-based OS. Standing on the shoulders of giants in the Yocto community Valve could, with a relatively small team of engineers, create their OS with a focus on the unique requirements of their entertainment platform instead of getting bogged down in the sundry, largely solved, problems of distribution construction.

Secondly, as someone with an increasing interest in information security and secure and trusted Operating Systems I see a good requirement in the platform for interesting security work. I look forward to interesting security solutions which balance human factors (I expect the SteamOS to be primarily driven by a joypad) with the need for a hardened OS which protects a user and their sensitive data (most likely banking details) from attack whilst ensuring the platform remains as non-intrusive as possible.

Finally, as a Linux developer, I’m rather excited about the prospect of folks (particularly some of my friends and family) having Linux-based entertainment machines in their living rooms. I’ve been thinking about a largely vapourware project to build a digital platform to enable pen and paper role players to game with their group, regardless of geographical separation. The project has remained vapourware, at least in part, because each imagined iteration has fallen short of anything tangible – largely because there hasn’t been a compelling platform to target. I have considered (and in some cases prototyped) targeting the XBox, the web and tablets, as well as writing a cross-platform desktop solution, but have hit road blocks when attempting to architect for each of them. (Side-note: huge kudos to the Roll20 team for realising the vision). I hope to be able to target SteamOS using the tools I am familiar with and re-using components of a gaming platform, such as multiplayer chat facilities.

Oh yeah, fourthly – video games! \o/

Update (14/12/13) – the first version of SteamOS was released yesterday and it looks to be a fairly stock GNU/Linux created as a Debian derivative.

Delicious Bookmarks for November 3rd through November 26th

These are my links for November 3rd through November 26th:

  • Hello, Luna Beta 1 | elementary – I discovered the Elementary OS relatively recently. They're building an open source OS experience by developing a new desktop environment atop a customised Ubuntu core.

    Whilst I don't entirely agree with all of the design decisions they're making it's nice to see a beautiful, polished OS environment built entirely by folks in their spare time.

    The technology choices are interesting too, their core platform is the Gtk+/Gnome stack with some additions from Ubuntu and all of their custom applications are developed in Vala.

  • Introducing TypeCatcher « andrewsomething@ubuntu:~$ – A nifty little app written with Ubuntu's Quickly RAD tool to install Google Web Fonts for offline use.
  • adobe/source-code-pro – Open source font for programming from Adobe

I wrote about about why these posts are being generated here: Sharing Links.

Delicious Bookmarks for October 4th through November 3rd

These are my links for October 4th through November 3rd:

I wrote about about why these posts are being generated here: Sharing Links.

Delicious Bookmarks for July 25th from 16:01 to 18:34

These are my links for July 25th from 16:01 to 18:34:

  • Ethics, Artificial Intelligence (AI), Robots and Society – "The purpose of this page is to explain why people worry about the wrong things when they worry about AI."
  • What is Artificial Intelligence – "Artificial Intelligence (AI) combines science and engineering in order to build machines capable of intelligent behaviour. It brings together work from the fields of philosophy, psychology, and computer science, and contributes to and has drawn on brain science and linguistics."

    A definition of AI by Dr Joanna Bryson

  • On Leaving Academia « Ars Experientia – A tenured professor explains why he's quitting his "cushy" academic job to go and work for Google…

I wrote about about why these posts are being generated here: Sharing Links.

Part time academic

As is possibly quite obvious from an earlier post, I am currently engaged in a course of part time graduate studies.

I’m going to ruminate somewhat on the why and the what here, primarily because I’d like to  improve my writing skills (and therefore need to write more often).

I’ve wanted to further my education and specialise my knowledge with post-graduate study since before I completed my undergraduate, yet it took me a few years to figure out which subset of Computer Science I would attempt to become an expert in. That story, however, would be a significant divergence at this point.

In short I’m studying on a part-time, distance learning, taught Masters program in Intelligent Systems (IS) with the Centre for Computational Intelligence (CCI) at De Montfort University (DMU).

This is essentially a graduate program in Artificial Intelligence (AI), for a definition of which I turn to one of the founders of the field:

“… the science of making machines do things that would require intelligence if done by humans” – Marvin Minsky

and for a slightly longer definition I point interested readers to a definition from the Children’s Britannica by Dr Joanna J. Bryson and Dr Jeremy Wyatt.

Why AI? It’s a field I’ve been interested in since first studying a module in Soft Computing during my undergraduate.

The social scientist in me is intrigued by the idea of pure AI; creating artificial life, observing it grow and evolve, understanding how humans interact with it and how it interacts with humans, etc.

The pragmatist (and idealist) in me, however, is extremely intrigued by the application of computational intelligence techniques to augment the human condition. A future where humans can avoid the 3 D’s of robotics – tasks which are dangerous, dirty and dull.

Many examples of such life enhancing work exists. Originally I had thought to mention (and link to) a great many, but instead I’ve opted to mention only a few current projects I’ve read about recently:

It’s worth noting that I don’t believe the two notions of pure AI and applied AI to be contrary. Indeed it seems that many well respected practitioners work on both theoretical and applied elements of CI. I hope to write more on this in the future.

Why DMU and the CCI? Last autumn I took the free Stanford online AI class and had really enjoyed the fact that I could work through the class without being beholden to a strict schedule which might interfere with my 8-10 hour work days. I wanted to continue this with my further education.

With this in mind I did some research into available distance learning programs and the CCI offers a great course structure with interesting modules taught by a department with a strong publication record and experience of real-world applications of CI techniques.

How is the course so far? I’m a huge fan of the organisation and assessment, so far as I’ve experienced in the single module that I’ve completed this far. The course encourages reading papers and practical application of the techniques.

I can’t wait for the next term to start!

Delicious Bookmarks for June 7th through June 30th

These are my links for June 7th through June 30th:

I wrote about about why these posts are being generated here: Sharing Links.

Celebrating the life and work of Alan M. Turing

This past weekend I had the pleasure of attending the ACM’s A.M. Turing Centenary Celebration in San Francisco. It was a fantastic event, as one audience member put it – “it’s like opening a computer history book and having all of the characters step out of the page”.

The celebration featured a diverse range of talks and panels and really emphasised how much impact Turing had on the scientific field he’s arguably the Father of (not to mention the other scientific fields he influenced).

Judea Pearl, Barabra Grosz, Raj Reddy and Edward A. FeigenbaumRon Rivest and Adi ShamirVint Cerf"Information, Data, Security In A Networked Future" PanelDonald E. Knuth"The Algorithmic Universe" Panel
Niklaus Wirth"Programming Languages - Past Achievements And Future Challenges" Panel"Computer Architecture" PanelEdmund ClarkDana S. Scott"The Turing Computational Model And How It Shaped Computer Science" Panel
Alan C. KayFernando J. Corbato and Ken Thompson"Systems, Architecture, Design, Engineering, And Verification - The Practice In Research And Research In Practice" PanelButler LampsonRaj Reddy, Barabra Grosz, Edward A. Feigenbaum and Judea PearlEdward A. Feigenbaum
"Human And Machine Intelligence" PanelTelling Mrs Turing About The Turing AwardBlind ChessRhododendron Invitation"Turing The Man" Panel

Each panel and talk was recorded and webcast on the day and are now available online for viewing, I highly recommend viewing them!

Extension experiment

Just recently I’ve been using Google Chrome more and more as my primary web browser, but there’s one thing that really frustrates me about it.

I tend to have a lot of tabs open, with around a dozen or so “would like to read” tabs and a widely varying number of tabs related to my current task. Even when I use several browser windows I soon find myself with 15 or more tabs in the current window.

As the number of tabs increases in a Chrome window you’re left with only the favicon by which to distinguish their contents, that’s if they have a favicon at all.

I decided that doing something about this would be a good opportunity to do a little light hacking and so set about writing a Chrome extension. It has been a couple of years since I wrote any JavaScript, and I still find the code I produce with it to be terribly ugly, but it only took an evening to whip something usable up.

There are a couple of things I’d like to fix:

  • Visually differentiate the active tab.
  • Visually differentiate pinned tabs.
  • Chrome gives focus to browser action popups and this falls through to the first anchor – I don’t like how this looks so need to do something about that. That being said I don’t actually think I want or need that element to be an anchor at all…

All that being said, I wrote this last night on the sofa and it’s already proving its worth. If I fix it up any more and figure out how to write less ugly JavaScript I may publish the code somewhere.

Training an artificial neural network

A few days ago I handed in the second assignment on my Artificial Neural Networks (ANN) module.

The task was to train an ANN to detect attacks vs. normal access in the logs of a simulated military network. The data came from KDD Cup 99, of which we used a reduced set for the assignment. This reduced set of 10% was almost half a million records.

We had to use Matlab, which we’ve been using throughout the term, but the assignment was the first time I’d had to do anything which resembled real programming with it. Matlab is a funny beast, particularly on Mac OS.

The Mac OS is the only target platform where Mathworks can’t ship their own JVM, and also the only platform which the version of Matlab I have access to runs in 64bit mode. 64bit mode for a JVM environment is interesting, all it really means (so far as I can tell) is that Matlab has a larger address space.

This meant I could miss a parameter off a function call and accidentally tell Matlab to create a half-a-million columns by half-a-million rows matrix and it will swap till the cows come home, or I run out of disk space, trying to do as I asked. A similar issue was a ‘fast but memory intensive’ algorithm slowing the entire system to a crawl, however things became less painful once a fellow student alerted me to a parameter that would tell Matlab to reduce the memory consumption. Suffice to say that algorithm isn’t so fast when it’s using a slow piece of spinning rust as memory.

In spite of  Matlab I really, really enjoyed the assignment. I had a great time tweaking the network parameters and experimenting to see which things made my network perform better or worse. I enjoyed writing my report on the experiment itself and what I would have liked to do had I more time/a faster machine.

I found two things about the process frustrating:

  1. The assignment was at least partially bounded by the speed of my study computer, a poor white MacBook with 4GB RAM and a 1st gen Intel Core CPU. It ran hot for about 5 days solid generating my final set of results.
  2. Whilst performing the experiments I kept learning new things which I could try, yet that would invalidate earlier experimentation. My take away her is that I need to do a better job in future of designing my experiments rather than just diving in.

Despite all that I’m quite happy with the results. I think the report is one of the better documents I’ve written, despite being a little hastily finished, and the network itself performs admirably. ~65% accuracy on my test data and closer to ~98% when I do some minor post-processing of the outputs.

So, what’s next? I have to give a 15min presentation about the assignment followed by a 15min Q&A session. After that it’s two weeks of lectures left before the end of term.

Delicious Bookmarks for April 6th through April 17th

These are my links for April 6th through April 17th:

I wrote about about why these posts are being generated here: Sharing Links.