July 2014: Update as I was asked about my interest in neuroscience. A few years ago, before my previous role, I decided I’d like to study neuroscience to a post degree level-at home. At the time paying for any university courses was out of the question, never mind a total lack of any and every requirement those institutions require. So instead I trawled the net and Amazon, linking books and authorities together to allow me to get a reasonably wide survey of the subject.
I review 25 of the books I bought here should you be another neuroscience enthusiast: http://www.amazon.co.uk/Teach-yourself-Neuroscience/lm/R2JIGJY4H5FIO9/ref=cm_lm_byauthor_title_full
As a degree or even A levels has more to do than merely read books, take notes or watch videos-notwithstanding the sheer richness of the social aspect of a proper course, I do not deceive myself into thinking I’d achieved a full degree worth of understanding, however I do have an appreciation for and a keen interest in the subject as a result.
The last six months have been divided between working on boats-repairing and crew on the one in particular. In addition, I abandoned masses of my decades of desk sitting for working with my hands a lot more. Consequently I’ve a lot of skill updates to do if I wish to work for anyone else in coding again. In addition I’m curiously fascinated by maths and quantum mechanics, so I’m spending some time on these subjects. Of course, on the surface of it, novice fumblings at these subjects have little commercial apparent applicability. At a later stage I plan to dig in quantum computing and see if it can be used to generate a spontaneous AI – a statement I feel could be hopelessly naive in light of later education.
A post is overdue on that matter of course but for another time.
March 2014: Previous versions of about me are intact for my own reference, read them at your peril :).
As I’ve been studying privately, the freedom (and hazard) this brings is one of changing directions at will.
My long term vision at time of writing is contributing to the research whose principle aim is the emergence of conscious AI. A tall, controversial aim at best but one that has a path of real and practical profitability along the way. Machine learning in general is constantly used now and is one of my key interests.
Consequently there are three main threads to my studies.
Programming languages and frameworks themselves – they’re tools for jobs and I believe in learning enough of any one to do the tasks its suited to do well. Consequently, if you are looking for key skills I’m into F#, R, Python, VB, C#, SQL and Neo4j – this list will expand and, yes, I’m not going to be a grandmaster of all these. I’m also interested in Lisp, Wolfram’s new language and various other technologies. As you can see, I don’t list UI design/website design in here – those are tools of necessity but not my primary concern.
Complexity theory, network/ graph theory, modelling, systems thinking – ways and theories to view and predict our world fascinate me and, of course, critical to AI research and probably the future of our world. On Coursera I’m working through foundation courses for many of these including the background maths, stats, probability required to be fluent in the usage of them.
Machine learning concepts – what can we do now, what are we likely to be doing and can we expand on this? Again, at time of writing, I’m working through Norvig’s work and Candida on Gene Expression Programming. In addition, as I’m fairly new to this, I’m having to work on neural networks and other basic concepts. Weeks ago I thought you could generate neural networks through GEP – since I found out that this was written about by Candida already. Given as a beginner, I could see this, I feel that this field might ultimately be of most interest to me :).
There are childhood motivations as well as adult ones behind some of my thinking, autonomous vehicles being one of them.
Another however is the idea of an intelligent AI companion that could make the difference between cognitive life and death for people with all kinds of memory problems. This research can’t help in the short term, but eventually an agent that works with you throughout your life could become the muse that makes life easier if an individual finds their own memory worsening.
Finding the balance to allow people and AI agents to symbiotically work together for mutual benefit is essential – and whether AI can be conscious or not, I do believe deeply sophisticated, prevalent AND symbiotic AI to be necessary for our long term future.
I also believe its ok to have windy, prophetic inner visions of the future that may seem simplistic. They’re stereotype ideals, that appeal to the soul and imagination and I know the route there is likely to be incredibly rocky, diverted and perhaps the destination a wild dream.
Our history is one of wild dreams causing change – good, bad and otherwise. So, when I’m struggling with in depth mathematical models because I’ve not quite got my head around the latest greek alphabet soup description of a model, it’ll be this vision that persuades me to crack open that next course! 🙂 Welcome to my first shot at a blog!
You’ll find some F#, VB, SQL and R here if you browse the posts, however this list will expand as I’m also exploring a lot of other technologies. One of the reasons for this, outside of my own general interest is I’m using Coursera and to a lesser degree, Udacity to add structure to my study of development skills.
I started to learn programming relatively late: I was 33 and learnt a bit of VB and SQL to make my last job easier. It wasn’t a programming role, rather mixed research and client support, so this wasn’t a continuous path of study, more several weeks here and there.
However, since then, those weeks have started to accumulate a bit.
My early influences before I got much code written at all:
Since then my programming interests have expanded a fair bit.
Other active areas of interest include complex systems, systems theory, neuroscience and maths. I’m a Khan Academy enthusiast of late and my 11 yr old nephew and I will be racing to the million point mark having started end of December 2013. In this way, I’ll get math skills normally gained via A levels and a degree – of which I’ve neither :).
I’ve a few projects I’d like to complete over the coming year, but as ever, such lists are apt for change – often weekly.
- A port of graphipedia – using Neo4j and wikipedia together. Graphipedia is a Java library for importing Wikipedia in this rather fascinating graph database.
A Kindle library app – as I’m fedup of trying to organise my books with the tools given by Amazon.
A DNA to Ribosome assembler simulator – this will need most of the main tools in F# from active patterns matching, computation expressions and agent based AND parallel programming. The final result will be a program that sequences large numbers of bases into proteins.
Other areas of interesting include:
- Machine learning, neural networks
- Gene/Gene Expression programming
- Data science and visualisation
Programming itself is a wide, deep subject with quite a bit of history compressed into it’s few decades. As I explore, I’m finding many of it’s best ideas happened in the 70’s and now starting to find their true home as computers become more capable.
As I don’t have any higher academic background post 16, I’m also exploring the areas normally covered by graduates in computer science. To this end, I’m partway into my first coursera algorithms course and analysis of algorithms. At a later stage, I’ll blog further about this aspect of my studying as MOOC’s deserve a thorough coverage and may be of use to other readers.
.Net – the main platform I’ve used so far has a lot to it and I’ve barely scratched the surface. Partly for my own future review, here’s a partial list:
- VB/C# – The main stream and most widely supported .Net languages, they’re close enough to be translated automatically by many utilities, however, C# does promote a stricter coding style – according to many.
- F# – functional first, mixed paradigm and wonderfully terse. This is what happens when you infer your types and get rid of unnecessary braces, type declarations and more. I love it.
- Entity Framework 4 and 4.5
- T4 templates – Code generation, a very easy method, used by EF
- Reflection – examine running .Net code, use methods from dll’s and more
- Expression trees – create new code and run it, at RUN time
- WPF, winforms successor – beautiful or can be, rather verbose and annoying to learn however.
- WinForms – good old fashioned standby, where I started
- PostSharp – Aspect orientated programming, a fine, convenient way to bring in all those pesky cross cutting concerns: security, logging, exception handling etc
Data Tech – SQL server 2005 – 2012 along with Management Studio and SSMA (Migration Assistant). I used this a lot and as a result have about 2 years of SQL experience at time of writing. Recommended SQL Books:
Some tools I like other than Visual Studio:
- Tsunami IDE
- Cloud 9 IO Code Anywhere
A few of my early bits of code:
A simple WinForms split view HTML editor, required as our help files were stored inside an Access DB and I’m simply too lazy to copy paste manually into tables. This had simplistic dynamically built menus that relied on one table to allow me to create shortcut HTML code for anything I needed. The resulting help pages relied solely on a single CSS file to provide columns, nested columns and other consistent layouts. This allowed me to avoid tables.
Class generator with optional mapping, primary key indicator and ToString – this relies on our in house db connector to list all the tables in an Access or SQL database, then identify the columns and their types. From here it was easy to use a dictionary as a decision tool to map out properties. A simple syntax highlighter was included for my convenience.
Custom report tool, using proprietary in house printing and db routines. A little reflection was called for in this DLL so that the main program could access any number of custom DLL’s to provide our clients with specialised reports with their own option interfaces. This was my first code to be used directly for clients and it relies a lot on Lambdas and Linq. Two idioms I really like using.
Dynamic rules engine for database table consistency checking after migration.