Category: Artificial Intelligence

Welcome 2015!

London Fireworks 2015M25 Carpark

It’s been quite a while since I’ve posted much, mainly due to a contract which requires me to drive on the M20 and M25 (aka “the carpark” for those outside the UK) and as a result, I just don’t seem to of had the time and energy…

Javelin TrainOh, how I long for those lovely trains, and will never complain about a 30 or even 60 minute delay – the worst I’ve had in a car is a 1h trip taking 4h!!!

I look forward to getting on something where someone else is doing the driving so I can use my time effectively

Amazingly, it seems like only 7% (4.5 Million) people in the UK use public transport. Given that nearly 1/3 (22 Million) live in the South-East, where transport is generally pretty good, that seems pretty low. No surprise given the number of people on the motorways – I’ll be happy to take one more off them next contract.

So what’s up for 2015 for me and this blog?

For one, I plan to start getting back in to a bit more of a rhythm, both with my posts and the associated (play) work (generally outside “real work”), and I will continue to post based on my experiences – recent and past…

theme : ecologyWhat are the themes though? Here’s a list of where I’d like to go:

  • Lifestyle & Reviews
  • Process & People & ScramJet
  • Clojure
  • Architecture, including Enterprise & SOA aspects

in no particular order. I won’t get in to specifics as much of it is not yet planned, or I’m working on it but don’t want to reveal it until I have enough meat on the the bones so I can be sure it will fly.

teaserHere’s a few teasers though based on posts I know I’ll write or have in draft form:

  • Review of Bob Marshall’s “Thinking Different” happening last year
  • Review of the: BMW i3 electric car; Samsung Galaxy Alpha
  • Corporate Subversion – in a positive manner of course :-)

and that’s really just the “boring stuff” – there should be some very interesting posts coming as I hit my stride.

I hope you’ve all had a great XMas & New Year break and look forward to some great interactions in 2015!

Changearc – the thinking person’s RiczWest ;-)

Today I’m (@RiczWest) starting a new twitter account. It’s called ChangeArc. For those who follow me, you’ll recognise this as my “Blog Name” – so what’s the purpose?

Simple – when I started using Twitter, it was primarily as a bookmarking tool. To some extent I still use it as such, but also for so much more…

There’s one problem though – as I look at a lot of content, that means a lot of tweets, and not everyone likes that, including me! There are a number of great people I’d like to follow, but I can’t because they tweet too much.

To that end, I’m going to start a much lower volume (only a few tweets per day) account which is ChangeArc. So what can you expect apart from less tweets? Extremely high quality tweets that will include any posts I do.

I don’t know how this will evolve, but it will be interesting to see…

Transcendence movie mini-review

Transcendence - Johnny DeppToday I decided to see Transcendence, despite Wired actually canning it – Transcendence: A Movie Too Terrible to Even Hate-Watch. In my opinion, that’s being way too harsh. Of course the movie could of been better, but it could of been way, way worse.

I won’t give any spoilers, but it’s basically a movie where Depp ‘Transcends’ in to a computer, a-la Kurzweils singularity. This bit is quite cleverly done as there’s a conceptual twist that is so obvious yet rarely mentioned in singularity literature.

Things go pretty well, as they do when you have a brain the size of a planet, but of course we can’t leave it there. With people involved we know there will be twists, and there are. I thought the ending was quite brilliant and romantic, even if a bit Hollywood which is to be expected as it’s a big budget film. With a cast of Depp, Rebecca Hall, Freeman, Paul Bettant and great supporting cast there’s no problem with the acting. The special effects are great to illustrate what a giant Quantum computer and associated peripherals may look like.

4 out of 5If you’re in to computers, AI and the like I’d rate it 4/5 – it’s as least as good as the brilliant British movie “The Machine” which takes a different spin. If you’re not in to computers and AI then it may be a 3/5 – not wasted time, but you could wait until an online/DVD release.

PS If you’re in UK, you may want to go elsewhere than Cineworld as they didn’t turn off the lights during the movie and have terrible “customer service”

PPS To end on a positive note, this is my first (of I’m sure many) posts using the absolutely brilliant BlogPad Pro App on my iPad. It actually makes it possible to use your iPad for blogging and at £3 is a no-brainer

DARPA Robotics Challenge Trials

DARPA Robotics ChallengeFor those of you who aren’t Robot Geeks and missed DARPA’s Virtual Robotics Challenge mid this year, don’t worry! Only one day ago the DARPA Robotics Challenge Live Trials have just completed

(Spoiler Alert – I’ll reveal the winner later on :)

https://i2.wp.com/media1.s-nbcnews.com/j/msnbc/Components/Photos/051009/051009_ROBOTRACE_hmed.grid-6x2.jpg

In case you’ve never heard of the DARPA Robotic Challenge and are wondering it’s significance, they had another one called the Grand Challenge for Autonomous Vehicles. It started in 2004 and no vehicle could complete it! They then scheduled another for 2005 which Stanford won with a tricked-out VW Touareg R5 called Stanley. This wasn’t the end though…

https://i2.wp.com/www.cmu.edu/news/image-archive/Boss.jpgWe then moved on to the Urban Challenge, which was won by Boss, a Chevy Tahoe with Stanford getting second place with Junior. Why is that significant? Because Sebastian Thrun (in the photo above) is the Director of the Stanford AI laboratory and also a Google Engineer. Yes, the Google Car is based on Junior, a modified Volkwagen Passat Wagon which came second in the Urban Challenge. Now back to the present and the Robotics Challenge…

You can find out more at the actual DARPA Robotics Challenge site or from the DARPA YouTube Channel which has a lot of content! If you want a bit more background, first watch Robotic Expectations & The Challenge History. The teams are all over the place, so here’s a slightly more structured curation of teams that had their own unique robots:

Yes, that’s a female robot! Uses flexible “muscles”
A mostly 3-D Printed robot Which is based on a chimp
Essentially built from one component! A clever multi-limbed robot
A lightweight robot One of the few Japanese designed robots
An Open Architecture Robot!!!  

And there were a number of other teams: IHMC Robotics; WRECS WPI; TRACLabs; ViGiR; TROOPER; MIT who all used the Atlas robot:

which is made by Boston Dynamics – the same people who bought you Big Dog, Cheetah (the fastest robot) and many others.

So who won? Unfortunately there were some pretty bad summaries for Day 1 & Day 2 and a number of 10h(!) archives of robots doing things extremely slowly…

In the end though, the top 8 (who will receive continued funding) were:

  1. Schaft (27)
  2. IHMC Robotics (20)
  3. Tartan Rescue (18)
  4. MIT (16)
  5. Robosimian (14)
  6. TRACLabs (11)
  7. WRECS (11)
  8. TROOPER (9)

I’ve bolded and underlined the ones based on Atlas (which are 1/2). Why is this significant? Because Google just bought Boston Dynamics, who manufacture Atlas!!! What’s more, Google also owns Schaft who won! Monopoly anyone?…

Atlas Frontview 2013As we saw from the Vehicles, it doesn’t matter whether a Google team actually wins. One thing you can guarantee – Google will be making robots in a few years which will be commercially available by the end of this decade. Given Google’s “record” – i.e. blatantly violating peoples privacy and who knows what else, I’m not sure how good this really is…

Yes, I know they’ve feigned disgust at various NSA revelations, but remember that their chairman Eric Schmidt, once said “If you have something that you don’t want anyone to know, maybe you shouldn’t be doing it in the first place”

I’m still waiting for him to mail me his social security number and bank account details, because hey, he’s obviously an upstanding guy who has nothing to fear… ;-) How would you feel about having a Google Spy (oops Robot) in your home?

https://i1.wp.com/www.digitalworldtokyo.com/entryimages/131205_NewAsimo.jpgOne question remains though – where are Honda in all this? Ironically, the Japanese did win this challenge, but using technology which is pre ASIMO. I think HONDA are quite rightly keeping to themselves as what do they really need to prove? If you look at any recent ASIMO information you can see that it’s way beyond where all the DARPA people are, which is not to say they won’t catch up, but who knows what’s in HONDA’s labs?… The last information we have is from 2011 which is pretty awesome!

Also, they don’t really need to participate in the “DARPA Challenge” as they’re already working on a Disaster Response Robot Based on ASIMO and are using ASIMO to Act as an Autonomous Explaining Robot – beat that DARPA door opening droids! ;-)

My hopes and predictions (since we’re getting near New Year) for the future on Robots?

Google will obviously have a number of models with military and civilian applications which will become a major profit centre for them (thanks military industrial complex :) – not a surprise considering all the “hard AI” work they’re doing with Kurzweil – stay tuned next decade…

Honda will enter with ASIMO and buddies around the same time. They’ll probably be more expensive but will be more consumer friendly and secure (i.e. they (hopefully) won’t be spying on you).

Open Source will have something, and Hubo definitely looks like a good start – I like the concept that I could own a robot that I can trust and improve :-)

EuroClojure – Day 1

I’ll be putting some notes / mind maps up here from EuroClojure over the next two days. In the “agile spirit” I’m including my notes fairly raw below and may refine them later… For the meantime, in case you weren’t able to attend EuroClojure, here is a summary of some of the fun you’ve missed ;-)

Keynote

EuroClojure Keynote MindMap

Critical Theory

  • Nomad
  • Rhizome
    • “Interconnectedness of Things”
  • State
  • Information
    • Collapse of Abstracton to Reality
      • Brazilia

Software

  • Production methods
    • Prussian “Scientific Forestry”
      • Create Flawless Abstractions
    • vs Organic Forests
  • ~ Forest

Greeks

  • Techne
    • Timeless
  • Metis
    • Cunning
      • Local
      • Contextual
      • Nomadic

Refs

  • Patterns of Software
  • Fictions and the aleph
  • Data and reality
  • Seeing like a state
  • Simila and simulation
  • Invisible cities

Alexander

  • The Quality without a name
    • Contextual
  • Richard Gabriel
  • Pattern Language
    • To express patterns that were observed (locally)

Gerald Weinberg

  • An Introduction to Systems Thinking
  • Heuristic Devices don’t tell you when to stop

Make your own Lisp

Make your own LispBODOL

  • Homoiconic
  • Immutable
  • Typed
    • Robin Milner
    • Example
  • Pure
  • Makes HN Caremad
  • Pattern Matchinng
    • Used core.logic

Instaparse

  • Mark Engelberg
  • EBNF
    • Or Parse Combinators

Refs

  • GitHub.com/bodil/BODOL
  • GitHub.com/bodil/building-lisp

Misc

  • Core Match
    • Not used as specific to Clojure…?
  • Lispkell
    • Also Lisp + Haskell

Life in a Browser

Life in a Browser

Genetic Algorithms

  • Breed s-expressions

Zipper

  • Tree handling Library

Resources

  • Complexity – a guided tour
  • Complexity explorer
  • Stephen wolfram
    • A new kind of science

Biologically inspired computing – Artificial Life Project

  • In browser with core.async
  • Enlil
    • Head Mesopotamian god

20131014-154848.jpg

Liberator

Liberator

Free your data with RFC2616

  • Http 1.0
    • + Patch
      • Liberator doesn’t handle
    • + WebDav
    • Almost 40 decision points for all status codes

Only 1 use in prod – Clojure library

  • Implement REST Resources
    • On the server side

~ 1/3 LOC Takes care of most of the status code processing

  • Uses “standard” from http flow diagram
    • See web site

Automatically converts your data to JSON or EDN

Creative Machines

  • Creative Machines

    Book: Creative Music

    • Death = Entropy Chaos*
  • Recombinance
    • Creativity does not occur in a vacuum

    Influence

    • Serendipity

    Learning + Inference + Knowledge

    • Canon Builder
    • Association Network
      • Like Neural

    New neural networks

    Cognitive Bias

    Examples

    • Death Dance
    • Aaron
      • Painter
      • Howard Kern / Cohen
    • Music (overtone)
      • Markov Chains
      • Neural Nets

    David Cope

    • Emily Howell
      • Music

    Creativity

    • Can happen by
      • Combination
      • Exploration
      • Transformation
        • Reflect on System Rules
        • And Change those Rules
    • Psychological
    • Historical

    Functional

  • Functional 3D Game DesignNeed to get everything done in 16ms
    Channels

    • Side effectual
      • => !used

    Events
    Callbacks
    World
    Based on JMonkeyEngine
    Probably go to LWJGL
    Use Quarternions
    Vector

    • 3 imaginary numbers
    • 1 real number

    Functional Reactive Programming
    Modelling both Continuous and Discrete Data changes

Common Clojure Smells

Common Clojure Smells

Martin Fowler & Kent Beck

  • Refactoring

Long parameter lists

  • Underlying issues

Clojure specific smells

  • Locally scoped atoms
  • Magic Keys
    • aka Data structure coupling
    • Hard to figure out the cost of change of key names, data types etc…
    • Keep data aware fns together (defrecord?)
  • Indirection by partiality
  • Macromania
  • Parents Proliferation
    • aka Over-nesting
    • Trying to do everything in one expression
    • Balance between tenseness & readability
  • Lazi-itis
    • Excessive use of lazy evaluation
    • Many discrete steps with a final one that executes the seq
    • Consider pulling things in to coarser-grained steps to avoid long pipelines

Kent Beck

  • Smalltalk practice

Jennifer Smith

Do OO Heuristics apply to Functional code?

The Almost Unbearable Lightness of LightTable

Note: This post is in Draft, I’ll be updating it a bit more…

LightTableSeesawAs I’ve been tweeting, I’m very interested in LightTable, the amazingly cool IDE being developed by Chris Granger @ibdknox and his gang. It’s a bit like the black spaceship from Hitch-Hikers Guide To The Galaxy though: “It’s the weird colour scheme that freaks me. Every time you try to operate one of these weird black controls, which are labeled in black on a black background, a small black light lights up black to let you know you’ve done it”. The next major release (in a month or so) will be addressing “user experience”, but in the mean time, what if you want to give it a serious try?

That is what the rest of this post is going to try and help you do also – get LightTable up and running so you can incorporate other projects and frameworks, which is really needed if you’re to proceed beyond trivial playing with it. But first, a warning from our sponsors (that’s me :). The version on LightTable says it all – 0.2.7. If you want a seamless install / development experience, especially if you have other installations of Clojure, IDE’s, lein, … then it’s probably best to come back later… They’re working quickly to address things, but this is a Real Agile Project that released very early and is now releasing often, so major kudos to them for doing so!

Finally, for some context, I’d rate myself as an “Enthusiastic Clojure Amateur” – I don’t do it for a day job, but I know my way around Unix, Maven, (now) Lein and Clojure through other environments. If you’re at this level or above then this post could be for you, and hopefully save you some time and frustration. You should also note that I use a Mac (is there any other platform to use for serious development? ;) so these instructions assume that. I won’t be doing a Windows post of this, but if anyone wants to then feel free to copy and change what I’ve written.

There are 3 key activities for setting up the latest version (0.2.7 or above) of Clojure:

  1. Clean Installation of Lein2
  2. Clean Installation of LightTable
  3. Creating a LightTable Project with Dependencies using Lein2

Note: I’m assuming you’ve got Maven 2 running, because you’re some sort of Java dev – I may add instructions for this later…

I’m sure all of these issues will be addressed in subsequent releases, but for the meantime, here’s how I did it – Note: it’s assumed that you’ve installed to your local user. If this is global (Unix) or Windows you’ll have to use different paths.

1. Clean Installation of Lein2

LeiningenThis was probably the most difficult and time-consuming thing to work out as I was running a version of Lein 1 that I’d installed ages ago, which is an absolute no-no. LightTable won’t work with this configuration and give you all sorts of weird errors. Whatever version of Lein you’re running it’s probably best to clean out your Maven directory:

rm -r ~/.m2/*

If you’re running an “old version” 1.x of Lein you’ll have to upgrade, which means that you should clean out your .lein directory:

rm -r ~/.lein

Then you’ll have to do a “Bootstrap Install” of Lein2 which isn’t that hard. Firstly, remove you’re old shellscript which in my case was in my ~/bin directory that is on my Unix path:

rm ~/bin/lein

Github LeiningenThen you’ll need to get the latest and greatest version of Lein 2.0.0 – this matters, as the default when you grab it from GitHub is the 2.1-SNAPSHOT (at this time of writing) version which is on the “master” branch, but unfortunately this won’t currently work with LightTable and give you weird connection errors. I originally got this, then changed it to Stable (2.0). In my environment, everything is in ~/Gits.

The final step for this is to then install Lein2:

cd ~/Gits/leiningen
lein install
lein version
>> Leiningen 2.0.0 on Java 1.6.0_37 Java HotSpot(TM) 64-Bit Server VM

2. Clean Installation of LightTableLightTableIcon

Once you have the right version of Lein2 going, it’s actually pretty easy to get LightTable going either if you haven’t installed it or are running an earlier version. To reset your configuration, just remove your .lighttable directory and contents:

rm -r ~/.lighttable

If you don’t have a recent version of LightTable, i.e. your icon doesn’t look like the above one, then you’ll need the latest installation of LightTable, which is pretty easy – just go to http://www.lighttable.com and download the correct launcher

Once you’ve reset your configuration, just run LightTable, it should then get the latest version and tell you to restart. When you’ve done this you can check the version from the “command line” at the bottom by typing “version” which should show 0.2.7 or whatever the latest (higher) version is. If it’s less then somethings gone wrong – Maybe you didn’t delete the entire directory? Maybe you have an old version of the launcher? You’ll have to do some digging if this is the case…

3. Creating a LightTable Project with Dependencies using Lein2

Now you have the right infrastructure set up, it gets very easy. To create a new project, you just create a default template:

cd ~/Projects/LightTable/
lein new guitesting

start up LightTable and connect to your project

lighttable-connect

during which you’ll see connecting and retrieving messages

lighttable-retrieving

and hopefully a brief connected message

lighttable-connected

If you get any blue error windows popping up on the left, then something has gone wrong, probably with your installation of Lein2 so you should go through and check the above process again.

Ah, but there is “one more thing”, which was the key capability I was looking for originally with LightTable, and that’s the ability to include extra projects / dependencies. Now that you’re up and running, this should be comparatively easy. You just add whatever you want to your project.clj, probably using LightTable now you have it running

(defproject guitesting "0.1.0-SNAPSHOT"
  :description "FIXME: write description"
  :url "http://example.com/FIXME"
  :license {:name "Eclipse Public License"
            :url "http://www.eclipse.org/legal/epl-v10.html"}
  :dependencies [[org.clojure/clojure "1.4.0"]
                 [seesaw "1.4.0"]])

which in my case was seesaw that is a development framework for Swing GUI’s that I talked about in my previous post on Easy UI development in Clojure with Seesaw. If you have an instance of LightTable running then you should quit and re-start it to pick up the new dependencies when you connect and that’s it! You should now be able to use LightTable like you see on all the latest articles and videos

Finally, I will be doing an “Unbearable Lightness of LightTable” when LightTable progresses more in installation to the stage where the above instructions will not be necessary. In the mean time, I hope the above has helped you if like me, you’ve been looking at all the latest LightTable videos and wondering why you can’t do these things.

PS If I you have a different experience then please let me know via the comments and I’ll correct or add to the post

Reflections on 2012

Reflections 2012It’s that time of year where everyone is reflecting on the last year, so I thought I’d toss my hat in to the ring. Personally, it’s been a year of great change, having moved from a highly toxic street in Reading (where our dog unfortunately passed away just before we left) to a beautiful one in Ashford where we are much more settled and I’m at last able to relax, grow and learn in a supportive environment.

That’s enough about me though, what about the IT Industry and wider world from my perspective?

Industry

  • The year Apple Stumbled – It wasn’t just iMaps, it was the lack of innovation and wierd and frequent release schedules which all smacked of internal chaos – understandable given that Jobs passed away late the previous year, but they’ll need to get back on track if they want those stock options to be worth something
  • The year Microsft Stumbled – two words: Windows 8 or Windows RT or Microsoft Surface. I must admit that I’m less disappointed with W8 than I though I would be – only going by playing with it in a store though as I’d never install it on any of my computers. It’s not over though, so the real question is what’s going to happen with W8 and Surface (Pro)

Software

  • SEMAT – Software Engineering Method and Theory has been pretty much defined by Ivar Jacobson and his merry band of Industry Legends and Corporations. It was favourably received by the OMG in December
  • ArchiMate picks up steam – for me at least before this year, it was only occasionally being used, whereas now, many organisations are using it for Enterprise and Solution Designs and then linking these to UML Technical Designs and Realisations
  • Clojure – I’ve been getting in to this and went to the London Skills Matter Clojure eXchange. Rather than a bunch of enthusiasts though, I met a bunch of enthusiasts, 1/2 of whom were working in Clojure! It seems this is probably an increase of a few hundred percent over the previous year, so something is happening. This may be part of the wider movement to “different” and sometimes functional languages.
  • Light Table – at the moment this is only a Clojure IDE, which will be expanded to handle other languages, but I’m yet to be sold on it. The demo was really cool, but the releases won’t run my code (which obviously works in other environments) and the interface feels a bit too simple at the moment. They’ve got kickstarter funding, so here’s hoping that we start seeing more features and functionality from the original demo as it could be one of the best development environments ever!

Hardware

  • Raspberry Pi – how can this not be mentioned??? It’s a UK concept that is taking the world by storm and riding a wave that was started by Arduino, DreamPlug and the like. The great bit is that Raspberry Pi only opened the space, much as OLPC did for small cheap laptops. The side effects already are and I’m sure will be awesome
  • FreedomBox, first proposed by Eben Moglen is gradually getting there. Not there yet, but it will get there and hopefully redress much of the planned snooping that governments around the world have fallen in love with
  • The Maker Movement seemed to jump up a level with people even 3-D printing guns and starting to sue each other over who owns what and can sell it
  • Fibre rollout in UK seems to be really happening and I’m liking what I see. I signed up on the minimal (and slowest) plan but it’s easily enough for me at 75G : ~ 30Mbps down and ~10Mbps up (real rather than pretend bandwidth). The great bit is for an extra £10 or so I can double those rates! The best way to get decent FTTC seems to be by going through a BT Reseller such as Xilo / Uno

Process

  • Nonviolent Communication – highlighted by Bob Marshall and created by Marshall Rosenberg, this seems to be gaining ground, along with concepts like Soft Power. This (hopeful) trend towards a kinder, gentler and more humane approach may hopefully only be the start
  • Lot’s of Noise from the Quiet People ;-) There seems to be a pick up in dialogue about introversion and quietude – all good stuff
  • The continuing Industrialisation of Agile. Agile stopped being done widely (in smaller numbers, but more effectively) ages ago. What we seem to have now is a bunch of PM’s who have done “Scrum” or “Agile” training and are operating using the same patterns – “I want that velocity increased next sprint!”

The World

That’s pretty much it. We’re off this evening to watch the London fireworks on a cruisey boozy boat on the Thames, so I hope you all have / had a great NYE.