OneQstn featured on The Toolbox

OneQstn has been featured on The Toolbox amongst a great list of simple, free to use web apps which perform one or two functions really well. It’s great that OneQstn is on the same list as some of these amazing services such as, Pingom, Subtle Patters and JSFiddle and has helped generate over 200 hits and over 40 new questions on the site within a few hours of being featured. As OneQstn grows and I add more services I’ll start to share the numbers behind how being featured a site like The Toolbox boosts traffic.

Thanks Sacha Greif for adding OneQstn to this great resource.

Why I learnt to code … eventually

I first tried to learn to code in 1999 when I was 12, grabbed myself a copy of SAMS Teach Yourself C++ in 21 days and figured I’d be cranking out the world’s best games on day 22. Well, day 4 arrived and I had thoroughly had enough - I’d made a calculator that could do single operations from a terminal input but it had been a boring, arduous process so I called it quits as I couldn’t see how this was going to help me make the next Need for Speed! Decent will power was clearly not one of my qualities back then!

Anyway, whizz on 7 years and I found myself sat in the computer lab in stage 1 of my electronics degree with a Bearded Russian Man lecturing us on the importance of being able to program as an electrical engineer … yeah right we all thought. Well, I managed to scrape through that module and the end result was some irrelevant scripts that could work out the resistance of a resistor network that you would never build in real life and a software UART (looking back this is actually kind of useful for embedded work - at the time it was about as interesting as watching grass grow).

So, strike 2 for programming.

Strike three came in stage 3 of the same degree course when I had to program a micro controller to drive a stripped down remote control car round a track without any input from me - well, several hours of group programming by the teams later we all had oddly similar buggies driving round the track!

No more, I decided!

I wanted to work in semiconductors (I’ve always found it the easiest bit of electronics to work on - something about holes, electrons and drift/diffusion currents just clicks with me) and programming was not going to factor into my career.

Well, the best way to work in semiconductors back in 2008 for a recent graduate was to do a PhD as no one was hiring - three years locked away in a lab to avoid the recession and I’d land a nice job at the end designing transistors to work in jet engines and volcanoes - yeah, my PhD was pretty fun!

Needless to say this plan is not what happened.

My PhD is complete (2 years, 11 month and not a day to soon), I don’t work in semiconductors and I write a few hundred lines of code a week for my job and my side projects! Surprised? Looking at my track record with programming I am as well to be honest.

So what changed? 

I needed to solve a problem, that’s what. I needed to control some lab equipment to run some boring, repetitive device tests and there was no way I was going to sit and do it manually - as every PhD student worth their bursary knows, if your experiments can’t run themselves whilst your in the coffee room then you’re doing it wrong.

Now, C++ was clearly not a good option for me to start with, particularly as I actually had to get something working before my PhD finished. So, I fired up a copy of LabVIEW (which is what most of science seems to run on to one degree or another) and started dropping additions, subtractions and long interconnecting lines to get something working.

I have no idea what it was, maybe because it was graphical, or because it was so easy to make a graph or just that I genuinely could sit in the coffee room whilst my experiments ran themselves, but something clicked. I suddenly “got” programming and soon I was writing LabVIEW code to parse massive data sets of JFET characterisations from room temperature to 300 degrees C just because I couldn’t face the two hours of manual work to do it by hand - I’d moved far beyond my original intention of just controlling lab equipment, programming was starting to become part of my day to day work flow. 

Soon I realised that I wasn’t using the best tool for the job in some cases and I decided to learn a proper language - C. Looking back I realise now that a higher level language would probably been a better way to go for parsing data sets but back then I wasn’t to know that. Although, there is a certain satisfaction in writing your own explode function and working out how to store all the new bits of data that you suddenly have to deal with - malloc’s can get a bit out of hand as I learnt to my detriment on many an occasion.

Anyway, that was 6 months in to my PhD and 3 years later I am fairly confident that I can get stuff working in a range of languages, not perfectly, but working. I don’t have a computer science background so I’m sure there are some basics that I’m missing but here is what I have learnt to some degree or another and how I have utilised them.

  • LabVIEW: Controlling lab kit and making graphs and parsing large data sets before I knew better.
  • C: embedded electronics, microcontrollers, low level stuff and parsing large data sets before I knew better
  • Assembly: for embedded stuff, not fun but it does make you appreciate how a status register works and what and arithmetic logic unit is that is still relevant in higher level languages
  • Objective-C: wrote an iPhone app for a business I ran that produced bespoke iPad and iPhone cases
  • C++: for the MBED microcontroller - because that’s what their API is in and we used one to develop the Radfan test rig (I still hate this language though)
  • Processing: Data visualisation for representing the data produced by the Radfan test rig
  • PHP: Because the web is built on it and I found it before I found out about Ruby or Python
  • Javascript: I realised HTML and CSS is boring without it and needed it to make the website designer for the iPad and iPhone case business

Looking back at my earlier attempts to learn to program it is quite hard to believe that years of saying “I can’t program and I hate it” (yeah, mature right?) that I have now build a number of things in a range of languages and am now moving up to using Codeigniter for my latest project OneQstn.

What changed?

Well, in the first three attempts at programming I was either doing for no real reason so didn’t push on when it got harder or, because I was being forced to do it for uni work and I couldn’t see the point. Once I realised that programming, albeit with LabVIEW, could save me time and solve problems, it clicked with me much more. As to why I have spent many hundreds of hours since then learning new languages and making new things, I think it boils down to the fact that being a hardware guy who can code, and being a startup founder who can code, just makes more things possible and I’ve realise that it is a pretty vital skill to have.

If anyone else has as similar story I’d love to hear it, or any story of haw you got into programming really.

Why did I make OneQstn.com?

Background

Several weeks ago at Radfan we decided that we wanted offer our visitors a way to engage with the site a little bit more. To be more precise, we wanted to give the people who visited the shop page something to engage with since the Radfan isn’t available yet. What we decided to do was throw up a simple question which would ask them where they would look to purchase the Radfan and then present a range of options. Upon selecting an option a thank you message is displayed and a mailing list signup box revealed.

Now, from a market research point of view this isn’t the most thorough way of finding this out, BUT with drive by traffic on a website I think you only have so long before the person moves on and potentially never returns. This type of traffic is great for raising product awareness but it is not the sort of traffic which is prepared to answer a 10 minute questionnaire.

After 4 weeks of running this question we have amassed over 200 responses and the conversion rate for answering the question to signing up to the mailing list is about 30% (from a brief glimpse at Mail Chimp) - all told we are pretty pleased with this.

Lightbulb

This got me thinking, we can’t be the only ones who wanted to ask people a simple question like this?

So, if I hadn’t written my own code to achieve this, what would my requirements have been?

  1. Keep my results private - or at least don’t feed it back to the respondent
  2. Make sure people can only vote once but don’t make them sign up for a user account
  3. Allow me to choose how to distribute my question
  4. Allow me to embed it on my website
  5. Don’t make me sign up for a user account, I can’t be bothered
  6. Display the results in a nice graph
  7. Survey has to not look like crap (here’s looking at you Survey Monkey)
Five minutes of market research later I find a couple of sites offering aspects of this list but not quite all of it.

OneQstn is born


Taking this list as the base, I built OneQstn in about 3 weeks in the evenings. The most important thing is making it super simple to get a question up an running. I decided to avoid having user accounts, as I think they add too much friction for a service (or feature really) like this. To add an element of privacy without a user account I made it so that the results are displayed at a randomly generated URL. Now, although not as secure as password protecting the results there is an element of security achieved through obfuscation/secrecy, in theory someone could guess the results url for a question but it is like a 1 in 4.8 with 40 zeros after it chance! Brute forcing would take a while to as there is a 1 second delay on the page load. 
Anyway, OneQstn was a fun little site to make and the only feature currently missing is the ability to embed on a website, which I’ll admit was pretty key to my use case and is next on my to do list.

Technicals


OneQstn is built on Twitter Bootstrap, Zurb Foundation, Codeigniter and ElyCharts

Introducing: OneQstn

OneQstn is a service designed to allow anyone to post a simple, multiple choice question and collect responses.

When a question is created it is hosted at a unique link which can be shared through Facebook, Twitter, Linked In or even Stumbleupon. The results are stored at another unique link and displayed in an interactive bar graph.

OneQstn is free to use and has a couple of paid corporate features on the way.

It took me about 3 weeks to make and feedback is more that welcome.

Twitter Callback Function to Display Single Tweet

A while back we ran a site which was on a hosted eCommerce solution. This was great for security but rubbish for server side scripting a because we were unable to run our own server side code. We wanted to display our latest tweet in the footer so to do this I wrote a function to retrieve a user’s tweets and then parse out the first one to be displayed.

Links are found and wrapped in anchor tags as are mentioned twitter handles for other users. It also grabs the date and displays that nicely.

I have used this on a couple of sites now and although it is perhaps a bit limited overall it has worked well for a while now.

Here is the Git gist https://gist.github.com/2199298

Software EUSART / RS232 for microcontrollers

Micro controllers come with a wide variety of onboard hardware to make our lives easier. These bits of extra hardware can reduce development time but have an added cost in the final per unit cost of your end product. In the case of a simple PIC the need to send small chunks of data with a serial/RS232 port could mean the difference between a cheap 12F device or a more expensive 16F device. 

This extra bit of hardware can be replaced with a nice piece of software which replicates the function of the RS232 chip and ultimately reduce costs. Now, there is some upfront development associated with a software solution, but, if incorporated into a larger library of software protocols will ultimately work out cheaper.

Here is an example of a quick and dirty software serial port for a PIC12F which I wrote to replace a larger 16F chip. Commonly this type of thing is called bit-banging.

https://gist.github.com/1973203

Looks promising but at the moment can only do simple discrete component circuits from the looks of things - no micro controllers here!

Tags: circuits links

Social blues?

Busy sorting out my Apps thanks to an iPhone backup malfunction and noticed that blue really is the dominant colour in social apps - well the successful ones anyway. So it got me to thinking why this might be and I have come up with 3 reasons:

  1. These companies were mainly founded in the post-facebook internet. Facebook is blue, Facebook is successful and therefore it could be an attempt at emulating it. This might not be as crazy as it sounds if point two has anything to do with it.
  2. Blue is just about the most pleasant colour to look at across a wide range or tones, it is calming, it is clean and, most importantly, it has an ability to blend in to the background in a way that few colours can. Blue is easy to design with and goes well with white and grey. Because of this it could be surmised that blue is the colour that either attracts/retains users and/or looks nice in a pitch deck to investors and therefore gets the funding initially. Then again all of that could be rubbish and point 3 could be the reason.
  3. These companies had male founding teams and therefore choose blue because it was their favourite colour …. ok, so hopefully that isn’t the reason but it is possible.

Thinking over my own websites over the years I have always designed in blue where possible. Radfan is red, orange and yellow but that was a conscious decision with our branding to promote warmth which reflects the product benefits; blue would not have made much sense really.

Any way …. back to working on my blue themed side project.

Update: I’ve since uncovered this Quora question … seems I’m not the only one to have pondered this trend

joelgascoigne:

It’s been a while since my last blog post, and I’ve recently been pondering why that may be.

It’s not that I’ve been doing less than when I was regularly blogging, it’s in fact quite the opposite. Since the last post we’ve hit some incredible milestones with Buffer including going through…

As usual Joel has written another great post about life running a start up and the importance of stepping back and reflecting on what is going on. When life is moving at 100 miles an hour it is important to take some time to disconnect and see where you stand.

I’m not one for religiously sitting down and reflecting but I try to do it as often as I can/remember. When I do, I find that asking myself the question “what has changed today?” is a great way to work out how things are progressing and making me think about what it is we are trying to do with Radfan and if we are on the right path.

Of course, if it has been a bad/slow day (or 5) then asking this question can bring about the internal self doubting that is unhelpful when working through a bad patch. The trick is to listen to those thoughts and then use them as the motivation to change something or, as Joel does, get it out in writing, share you thoughts and see what the community sends back to you.

Don’t try coding when your puppy is in the room as this very common. Cute but very distracting!

Don’t try coding when your puppy is in the room as this very common. Cute but very distracting!