02 August 2011

Quick post

before I go on holiday for the week, just before I forget that this thing even exists.

I've spent quite a bit of the day fixing the issues (or, rather, issue) making the University Radio York index page not take two seconds to load.  The issue in question?  It was loading a massive amount of image information for flickr in such a way that blocked the page rendering.

Over the holiday, which will involve the abject lack of computer until Sunday, I'll be probably doing some design on the URY API and other systems, so I can get back to a computer with an idea of what to do and where to go for once.

20 July 2011

A fork in the road

So, the university's computer science society issued a programming problem to be solved before next Monday.

Whilst people boast in the society IRC channel about their linear-time solutions measured in hundreds of bytes of source code, I'm left with a cubic-time brute-force algorithm and the distinct inability to think my way into finding a linear solution, despite hours of concentration.

And I start wondering to myself: I've never outshone others in the field of raw problem solving.  My interviews at Oxford went down like a lead balloon, after all.  Will this ever change?

I live in hope.  My dream at the moment would be to never leave university, to continue on as a postgraduate and then a researcher.  I'd love to be able to push the envelope for computer science, to contribute to society without the humdrum of a standard programming job.  That, and I can't bear leaving York and its lovely but unpretentious campus and atmosphere behind.  Not yet, at least.

But to be an innovator, I would need to be able to think outside the boundaries, to be creative and, well, innovative.  If I can't find a foothold in simple programming exercises, then that worries me - I need to find some field I can push the envelope in, and that's one door that already seems to be closing.

I seem to be very much a man of practice at the moment - I found the practical programming strand by far and away my favourite bit of the course last year, as well as the easiest.  I actively enjoy practical programming, especially re-implementing existing ideas in a cleaner or better way, and part of me is convinced that this is my true calling.

We'll see.

13 July 2011

Out with MPD, in with SPI

A short while into implementing MPD, I realised that there are a few sticking points that preclude it being a good fit for SLUT's design.

The primary issue is that MPD manages its own database.  This would be fine if it weren't for SLUT's intended position at the bottom of the BAPS2 stack, below the database level (and University Radio York already has its own database, with its own management tools).

Secondly, the use of MPD in SLUT requires SLUT to connect on the TCP level to three separate servers, controlling each via a separate protocol from that used to tell SLUT what to do - this indirection would provide overhead as well as added frustration for the Computing team, who will have to ensure that four server processes are running in tandem.

There has, therefore been a design change:

  • SLUT will now use an internal playback engine, based on the Java Sound system using its Service Provider Interface (SPI) to support a variety of file types.  MP3, FLAC and WAV will definitely be supported, and these (alongside WMA, which will likely be unsupportable) are among the most requested formats by users of the original system.
  • The SPI playback engine will be inherited from a previous project I started on github while learning Java, JOPS (Java Originated Presenter System), which was itself an early exploration into how BAPS could be replaced by a Java-based system.  This, itself, was IIRC based on sample code. =P
  • This will remain abstracted from the controller set, such that it can be replaced with a more efficient playback engine later.
Hopefully this will allow SLUT to be up and running before the end of the summer whilst keeping it manageable and cohesive.

12 July 2011

Icelünd, Iceland

So, I've managed to somehow finish the first year of university and plunge into the mire that is the University of York's incredibly over-generous summer holiday (start of July to second week of October!)

I haven't yet thought about getting a job to tide me over.  This is partly because I still have quite a bit of student finance left to live on, and partly because I have a lot of voluntary stuff to do for University Radio York over the year.  I'm almost glad I didn't get into GSoC, thus.

Stuff I'm working on:

  • SLUT, the Streaming Library of URY Tracks, which will (along with the URY API) be a replacement for the Broadcasting and Presenting Suite server system.  It is going to be a minimalist but extensible Java controller for external playback systems (initially, MPD) which arranges them into channels which can then be controlled by JSON-RPC.
  • The URY website.
  • The URY API, (what will become) a PHP-based REST-style API for securely accessing URY's database assets.  This will in turn become part of the new Broadcasting and Presenting Suite.

It returns!

I keep forgetting that this exists.  I should really work on improving my memory.  =P

29 August 2010

Lack of vision

<lis0r> that's because you're an idiot with no vision
<lis0r> take your head out of stallman's arse, and take a look around you

So I ended up having a messy fall-out with pretty much everyone in the York computer science IRC channel, mostly exacerbated by my general lack of argumentative skill. However, I'm going to continue my train of argument in a somewhat more structured and premeditated format here, because I need something substantial to post so I look as if I have substance.

My point is that even in the age of immersive 3D personal computer interfaces, I believe that I and others will still use the "orthodox" 2D display/keyboard/mouse interface design.

Here are my points:

  1. Immersive 3D destroys the personal computing metaphor.

    By the "personal computing metaphor," I mean the idea that the personal computer is a tool for information processing. It's a small point and not one that many will get worked up on, but I feel that the disconnection between the computer and its environment - the computer being an object in its environment - is an important one.

    Many years ago, Microsoft released an graphical user interface called "Bob," which replaced the window-based metaphor of Windows 3.x's Program Manager and File Manager with a virtual home, in effect making the computer interface emulate the environment the computer itself existed in. The user interface was not successful, and distanced people from the computer's main goal: to process information, and do it quickly.

    The most successful of today's user interfaces work in conjunction with the idea that the computer is a tool, and expose the computer's functions in a way designed for maximum usability, rather than making the computer behave like an environment in itself. By making the computer its own environment (admittedly different to crudely emulating one), in my opinion the implication is that the purpose of computing is shifted from using the computer as a data processing tool to using the computer as a virtual home. This is bad because user interface designers will likely try to make the immersive 3D environment more and more like a virtual home (cf Bob), and forget the reasons people use the computer inside their existing home in the first place.
  2. Don't fix what isn't broken.

    We have been using 2D monitors, keyboards and mice for decades, and hardly ever have people complained about their usability for general computing.

    Some businesses still make use of old hardware and software, sometimes many years after officially becoming obsolete. Why? Because it would be a waste of time and money (training and maintenance costs as well as initial purchase) to upgrade. The current system serves its purpose and serves it well.

    People will still use the 2D interface because it serves its purpose well. It's served its purpose since the dawn of graphical computing.
  3. 3D processing wastes system resources.

    With GPUs becoming ever more usable in general-purpose programming, I expect that by the time immersive 3D environments hit the market, they will already be very useful in complex general-purpose information processing. BOINC, a major distributed computing platform running such projects as protein folding simulators (which could be useful in medical breakthroughs in the near future), can already use some GPUs to accelerate processing tasks.

    3D immersive environments would need quite a bit more computer processing than that which is already used in 3D gaming. When the computer is being used for information processing (eg, not a game or for multimedia, both situations that I imagine immersive 3D may, just may, be useful and relevant), the overhead caused by the 3D processing will result in resources that could be used for the information processing being instead deferred to rendering the 3D scene. (Especially compiling!)
  4. 3D technology will be expensive.

    Some of us will have better things to do with our money than blow it on the latest and greatest technological gimmicks. Some people just won't be able to afford the new technology - are they idiots for being such?

    Eventually, the price will go down, but by then we will have people using 3D interfaces among people using 2D interfaces, and it will take quite a while for the latter market to become entirely extinct. DVDs came out in 1997 in the US, and VHSes took until 2008 to completely drop out of use there for film releases - a decade. Even then, VHSes are still in use across the world, and I dare bet that there are still many people who cannot afford to replace their VHS systems with DVD systems.
  5. Leaving one enviroment to enter a virtual environment has many drawbacks.

    Right now, with my computer being part of its environment, if I want to leave the computer and use another item in my environment (the bedroom), say my DS-8 keyboard, I simply get up from my chair and walk over to the next item. I can see it without changing anything other than turning my head to the left. I can see that it is on and that its amplifier is also on. In order to return to focussing on the computer, I just turn my head back to the right.

    If I were in an immersive 3D computer environment, to operate my keyboard I would first have to remove the 3D display equipment. At this point I leave one environment, the computer, and enter another, the bedroom. The two environments may be completely dissimilar, and I would likely need to take some time to acclimatise to the change in environment, just as I would if I walked outside of the bedroom and into the hallway.

    To check the state of the keyboard, which due to its own state of being technologically obsolete (but still fun to use) is not integrated into the computer environment, I must change environments. This concept is strange enough (for me, at least) to write about, let alone experience. It also removes a large part of the convenience of keeping everything in one environment - again, to look to something to the left of me in the real world, I need only turn my head left.

    Even worse is that the immersion of oneself in another visual environment is that it deprives us of the advantages of being to see our real environment. An unrealistic situation, I know, but if I'm surrounded by my file system, I can't see the person that just silently entered my room with a bloodstained knife and the look of murder in his eyes.

    Of course, augmented reality as opposed to replacing reality (overlaying one environment on top of another one, instead of replacing it) would go a long way to alleviating this issue. However, there is still the, admittedly even less likely but still possible, issue of that window I'm being shown in the top-left corner of my eye obscuring my vision of the knife in the hand of the person that just entered the room. For all I know, he could be holding a laser pen.
  6. Sight immersion is not everything.

    In order to really blur the difference between the real world and the simulated computer environment, there must be a believable simulation of all the other senses, too. This includes hearing (surround sound), touch (which would likely require many technological advances to simulate accurately), taste and smell (even less possible to emulate, without direct access to the brain).

    If my eyes are seeing a green field of grass, my ears are hearing the buzzing of bees, and my nose is smelling the moulding contents of the bin bag I'm sharing my real-life room with, then my brain is going to be rightly confused. If I'm watching the grass on a monitor and hearing the bees on a pair of speakers in front of me, I know that I'm in a room with the bin bag (which should really be taken out) and the other cues are coming from a simulation.

    On a related note, I worry that the immersion's depth will eventually improve to the point where it is impossible to tell what is reality and what is not. Fiction has dictated the results at least ten dozen times over, and to me it's still a very nightmarish concept.
Feel free to argue and disagree with the points I'm putting forward here, but I feel that at least some of the things I've said are perfectly valid points.

Also, I believe that just because I'm reluctant to embrace one narrow aspect of computer science innovation does not immediately make me an "idiot" with "no vision" who is unworthy of receiving a degree. There are many branches to computer science, and I believe that in the next three years I will find one I do agree with.

EDIT: Edsger Dijkstra, one of the most famous computer scientists of all time, didn't use a computer to write his theoretical manuscripts. A true idiot, I'm sure you'll disagree.

26 August 2010

Emergency exeunt

Sounds like a band name.

Today, I ported namcap, a pacman package analyser and sanity checker, to Arch Hurd's AUR.

The port is a bit flaky - I had to replace an entire module with a quick-fix kludge because it depended on ldconfig to find out where all the shared objects in a system were (Hurd not having ldconfig), and there seems to be a bit of trouble with dependency and permissions checking - but otherwise namcap seems to be functional and can be used to check your Arch Hurd packages for problems before they hit the AUR. It's even been patched to kick up a fuss if you use /usr (which is deprecated on Arch Hurd)!