Staying in Shape!

Although I’ve been exercising by going for walks and bike rides, and doing kettle bell work outs, I think that the amount of running backward and forwards between meetings I used to do must have had some exercise value. Spending more time focused at my desk has meant a net decrease in exercise, and I’ve put on a bit of weight.
To rectify this I’m going to increase my daily exercise regime and adjust my diet (which I need to do anyway). Trying to get a regular bike ride into my routine; but I’m not sure how good it is finishing it off with a pizza :-S

Post bike-ride breakfast pizza!

A post shared by Toby Steele (@steele_toby) on

I’m really starting to enjoy the flexibility of being able to work wherever I take my laptop – especially when it’s sunny it gives me a great opportunity to get out and about and enjoy the sunshine. Sitting here in a café up in Dublin, updating this blog and getting a prototype web-site set up.

It’s been a busy week – after starting to play around with Brain Control Interfaces, a proposal we have put together for brain-controlled art has been accepted by the Dublin Science gallery for its Hack the Brain event (https://dublin.sciencegallery.com/page/hackbraindublin). So I have been spending part of the time working on a way to connect the OpenVIBE Brain Control system to the Unreal 3D engine, so we can use brain-control to control elements within the game engine. It’s slow progress, but last night I got as far as causing a virtual ball to roll around the screen under the control of OpenVIBE, so we’re getting there.

Alongside this, my main focus is learning about Machine Learning and Natural Language Processing; both of which are fascinating, and key to some ideas I have; and on looking at the possibility of joining a team focussed on consolidating an existing start-up business and trying to make it really fly. More on this as I when I get fully involved…

All told there are now four different projects I’m involved in, alongside the learning I’m doing. A couple of these are potentially commercial viable; and the others are great experiences which I think will bring me a lot of value through the things I learn through them; so in general I’m feeling pretty positive. I’ve still not had that light-bulb moment of thinking ‘This is it!’ around a project; but I’m not really expecting that yet – I’m feeling that getting involved in a variety of ventures, learning relevant tech; and giving myself head-space to freewheel a bit; are all pushing me in the right direction.

Starting Balls Rolling…

BCI Paraphernalia
Now I just need to accurately attach these wires to my head…

The last couple of weeks, now that I’m beginning to settle into the fact that I’m no longer having to go to work every day to work on the same project, have felt very much like trying to follow my instinct, learn as much as I can, and start getting some balls rolling to see where they end up…

I’m finding that I’m working longer hours than when I was fully employed; but loving having the freedom to work (at least at the moment) on what I want to focus on!

On the learning front, it’s been great to put together a Proof of Concept around an events and listings app… no immediately obvious revenue streams; but a chance to get more comfortable with Angular 2, Python, and using HTMLs Canvas object.
As far as more formal learning goes, I’ve enrolled on a machine learning course (https://www.udemy.com/machinelearning/) as this has always been an area I’ve been fascinated with, and also because a lot of the concepts and ideas I’m starting to play around with all at their core have a requirement for some intelligent processing of data to extract meaning from it. As yet, I don’t know whether some form of Machine Learning will be the solution to this; but my instinct tells me that it is going in the right direction, and so definitely something I need to understand better.

I’ve also started collaborating with some friends on a Brain Computer Interface (BCI) investigation – wiring up my head with electrodes and then trying to derive some meaning or intent from the signal produced. So far I think one of the biggest challenges is coming up with a way of quickly, easily and reliably attaching electrodes to the right location on a person’s head – the whole procedure is messy, fiddly, inaccurate and time consuming. To do it properly involves two people and careful measurement. Then spending hours working on and debugging code with wires trailing from your head is not the most comfortable thing to do. I’m not sure if there’s an easy way around it, but I’ve bought some bits and bobs that I think I could use to build a makeshift sensor head-piece. Will give this a go over the next week or so…

Looking out across the two Sugar Loaf ‘mountains’ of North Wicklow

In the meantime, I’m enjoying the amazing weather and being able to head off on my bike through the mountains to clear my head – it’s not a bad view to have on my way to the ‘office’.

Tightrope Walking…

Over the last couple of weeks it has definitely been a case of ‘don’t look down.’ It’s been great to have some time to play around with some prototyping, but it has also been interspersed with moment of anxiety about what I’ve done.
That said, I feel like I am moving forward and making progress. I’ve met with some great people and got a couple of interesting projects underway that are stretching me technically and giving me a chance to learn new things. It’s not clear if either have any commercial viability, but at the moment that is less important for me than to be getting stimulated in technically new directions, and also seeing how other people think about ideas and ways to work.

One thing I have learned this week is to be super-clear on why an idea is worth doing, if it is to be something that has a chance of being commercially successful. Talking some of my ideas through with people I respect I have had some great feedback:
– Who would want or use this?
– Why would they want it?
And if there isn’t a clear, one sentence answer, the chances are the concept is too woolly.

OAuth and no washing…

The day starts with a cycle through the Wicklow mountains, which was great and completely energised me.

Then the washing machine packed up, which was not so great. Began the debugging process – cleared out the drainage pipe (finding a 1 cent coin that must have been responsible for a lot of noise the machine made) but the drum still refused to go round. Emptied the machine and put it on a full wash cycle to see if it could be coaxed back to life. Saw the drum begin to twitch, followed by a loud pop, and the house fuse blew. Not good. Time to call a professional!

On the software front, I’m digging into OAuth 2.0, as part of the path to understand web site and web service security; and hopefully building some re-usable site registration and security components that can be re-used in multiple projects. Yes, it is probably easier to use off-the-shelf components, but I want to understand how the nuts and bolts of it work, and so doing it from the ground up seems to be the best way to achieve this.

I’m finding the more I talk to people, the more the array of modern relevant technology to learn and understand grows. My ‘To Learn’ list is expanding at an alarming rate…
Small steps is what it’s all about, and I’ve spent the day feeling like a total novice getting to grips with OAuth2 and the Angular framework. For simplicity I decided to go with the Google OAuth log-in API first of all, and the on-line docs here https://developers.google.com/identity/sign-in/web/sign-in made it look disarmingly simple.
It’s never as easy as it looks, and whilst the sign-in fragment worked well on its own, as soon as it was embedded inside my Angular2 application the button stopped appearing.
Several hours of digging around later and trying lots of different approaches, I have a basic Angular2 log-in component working. My plan is to implement the log-in mechanism as an Angular2 component to manage the user interaction, and a service object behind it which takes the User object and uses this to authenticate with my application service. Once this is working and stable I will post the code for anyone who may be interested.

Things I have learned today:
– Connecting to Google’s OAuth log-in APIs
– The horrible javascript technique of using ‘let that = this;’ for referencing ‘this’ in callback functions; and how to avoid the need for this with lambda (=>) functions instead.
– The need to use ‘ChangeDetectorRef’ in Angular in order to ensure bound variables actually cause the dependent UI element to update.

First day at ‘work’

9am, not the quietest start to my new journey – our next door neighbours are getting their bathroom tiles replaced, so my first work day begins with the sound of loud hammering resonating through my home office. Thank goodness for noise cancelling headphones!

Spent most of the day planning – figuring out what I wanted to achieve, learn etc; and also the things I need to get done soon to help me on my way. I’ve also started looking around at start-up and small business networking activities in the area, so that I can start making contact with like-minded individuals who are trying to do the same thing.

In order to keep things structured I am going to schedule the work I do as weekly sprints, at least to ensure I’m achieving all the things I want to. So far at a very high level I want to ensure the following activities are included:

Every Day:
– Exercise
– Blogging

Every Week:
– Prototyping and application development
– Networking – in the Dublin start-up and software development community
– Brainstorming – continuing to spend time thinking up new concepts and ideas
– Learning
○ Software tools
○ Development practices
○ Technologies

That’s at a very high level, and so the next step is to create a back-log of work items so that I can focus my prototyping and technology learning activities. One other important thing that I need to do over the next week or so is to figure out my ‘compass’ – what are the values, wants and needs that orientate me; and based on this what is my personal mission statement. If I can get a clear idea of this, then it will help guide me, and inform the decisions I make over the coming months.

Just to ease myself back into development, I spent the last couple of hours of work in the evening dusting off a prototype web application that I have been tinkering with for a month or so. More on this later, but I am planning to use this as the test bench for a lot of things I want to play around with. It is a single-page web app written in Angular 2, talking to a set of web services. I want to use this application concept to gain experience in a number of areas:
– Writing complex JavaScript / TypeScript and Angular 2 applications.
– Creating a microservice-based server architecture.
– Machine learning and data analytics.

But for now I spent the rest of the day trying to understand server-side URL rewriting in order to get the Angular 2 app’s routing working properly…

Modern Effective C++
Time to start brushing up on neglected skills…

Day 0…

The Plan

What happens when you decide to leave a steady job, with no firm plans for what to do next, but the general desire to try to generate and grow a business idea from an initial flicker of a concept into something that at least provides enough income to live off? This is the question I am trying to answer, and the journey I am planning to document over the next six to twelve months.

An Introduction

So who am I? A software engineer and engineering manager, based near Dublin, Ireland, who has spent the last 20 years working for a number of well-known companies to build mostly media and television related software. This has been an interesting career, during which time I’ve learned a lot about designing and building large (and small) software systems, how software teams collaborate and interact with each other; and many of the things that can accelerate or inhibit software projects.
Over the last few months I’ve been evaluating my career to-date, and have come to a couple of conclusions:

  • That the thing I most enjoy about software development is actually designing and implementing the software itself; whereas over the last few years I have spent much more time managing teams and processes rather than actually building software. I’ve realised that I don’t feel ready at this stage in my career to completely turn my back on the software development craft I actually trained for and solely focus on management.
  • That over the last few years I’ve built loads of prototypes and side projects in my spare time, but have never had the time or energy at weekends to take them anywhere near the point where they could be productized, and that this has been a recurring source of frustration for me.
  • That my dream, for most of the 20 years I have been working in the industry, has been to set up my own venture; but that my day job has always got in the way; and that if I don’t do it now, when am I realistically ever going to do it?

So with the above in mind, I have taken the plunge, quit my job, and given myself six months to re-focus back on building software and developing ideas with a view to starting a company. I’m looking at this as an experiment, which at the very least gives me a chance to get back into coding and serious software development, and to learn some of the technologies that I’ve been wanting to play with for some time but have just never had the chance.

To keep things focused I have set the following initial objectives for myself. I am sure that these will change over time, but they give me something to start with:

  1. Dive deeply back into software design and development: re-sharpen my software skills, re-acquaint myself with programming languages and platforms I used regularly in the past; and extend my knowledge and skills across relevant modern technologies and software techniques that I haven’t had a chance to use up to this point.
  2. Brainstorm, explore, ideate and iterate towards a viable business idea that meets the criteria of being something that I would be happy to work on for at least the next five years (I will expand on this criteria in later posts). I am giving myself six months to reach a point where I have a prototyped concept that passes a set of viability tests (more on these later, too). If at this time no such idea exists, then I start sending out CVs and applying for jobs. If, however, I have something that looks like it has potential, then I will give myself more time to develop it further.
  3. Learn how to start-up and run a company. At the moment I am very consciously ignorant of how to do this. Beyond a ‘Starting Your Own Business’ course at university twenty-one years ago I have zero training in trying to set up a business; and so I am looking to educate myself, reach out to others for help, and hopefully find one or more mentors who can help me in this journey, and stop me from either completely screwing up, or squandering my efforts.
  4. Have fun!! I have enjoyed many aspects of my career up to this point immensely, but for the most part it has been a serious business, developing things in a serious manner. Way beyond the simple fact that for at least the next few months I am going to be able to go at my own pace, along the path I decide; I believe that keeping things fun, with a sense of excitement and impulsivity, will aid my creativity and productivity. At the same time I think it will give me more insight into how to manage the paradox of software development, in the sense that it is inherently creative, and at its most effective when a developer and development team is given the freedom to do what they want; whilst at the same time that creativity is constrained and inhibited by deadlines, legacy software and existing architecture.
  5. Spend some time thinking about what makes software development work well, and what impedes it. There are lots of different methodologies and schools of thought around how to plan, design and implement software effectively; but experience has shown me that even with a willing and informed organisation there is often the feeling that the development team is not working to what should be its potential. To me this is illustrated most clearly when I’ve taken part in hackathons, and seen the same team of people achieve more in 24 hours than they would normally be able to achieve in several weeks using the ‘normal’ development process. Whilst I know that there are constraints and factors present in day-to-day product development that don’t exist in a hackathon, I am still convinced that there are ways of executing product-quality software development whilst maintaining the immediacy and energy of a hackathon or rapid prototyping; and so this is a concept I want to explore over the coming months.
    6) Document my progress. That is where this blog comes in. At the very least it will help me keep a record of what I’ve done and the thought processes I’ve gone through. It may catalogue a comedy of errors; or (as I hope) it may also document a journey that achieves at least some of the goals above, and passes some interesting points along the way. I guess time will tell…

So there you have it. Today is day zero, the last day of the bank holiday weekend after leaving my job. Tomorrow the journey begins…

Resignation

Dear All,

Tomorrow, April 13th 2017, will be my last day. After nearly 12 years in this team it is time to bid you all a fond farewell and try something new. It has been quite a journey, during which I have met, worked with, and learned from, some absolutely great people. I wish you all, and the product we have been working on, the very best in the future.

Regards

Toby

And so it begins…