Posts in Category: software

Budget *BSD remote servers

It’s no secret I’ve never really bought into the Linux mindset: I’m a *BSD diehard inside, even if I’ve had to ‘slum it’ on remote Linux servers for the past few years. I’m happy to find a UK host who has a pocket money KVM base system on offer that appears to work with both FreeBSD 10.1 and OpenBSD 5.7. Sadly the control panel on the hosting backend refused to recognise any NetBSD .iso other than 7_RC1, but the KVM BIOS declared that to be an empty/unbootable image 🙁

So OpenBSD 5.7 it is, on a 64-bit x86 (pah) host, idling with sshd, ntpd and a localhost smtp system in 68MB of RAM… Nice !

Take a look at what http://direvps.com/ have to offer if you fancy playing around with one.

SSH error “roaming not allowed by server”

There are plenty of discussions around why you might need to enable sshd options if you see this error, but before hacking your config, did you add a new key to a key-only login config with the following type of command:

$ cat >>authorized_keys
[paste text]  
[ctrl+d]  
$

If so, take a look inside your authorized_keys file and see if the terminal used for pasting has helpfully added newlines into your key…

Lasers and MIDI and software… Oh my!

Photo of Jean-Michelle Jarre performing in Helsinki in 2009 © Miemo Penttinen

What happens when a music teacher suggests instrument variety is a driving force behind a child enjoying music, the child says “anything unusual” is good, the other child wants a techie project and the father has far too much 80’s electronica ?

We decide to get a laser harp, of course ! 🙂

And there’s no way at all this could have been due to my obsessive saving of paper-round money to buy Jarre albums on tape to listen to on my Walkman (with Dolby-B, I’ll have you know – quality antiquity !).

A quick Google later and it’s apparent that commercial units run from €500 to £1000 as ‘entry level units’. So that’s not happening. The Wikipedia page does an excellent job of sucking almost all of the fun out of the description, and doesn’t help much (apart from providing a link to the excellent photo by Miemo Penttinen).

There’s a Makezine article by Steve Hobley that is interesting as it includes pitch bend although the harp is framed and uses multiple lasers, but this Instructables article is closer to what I had in mind as it describes (with source) how to create a single laser scanning frameless/infinite harp.

So given that I can’t resist changing stuff I know nothing about, is that $100 estimate what I need to spend ? Well, I have breadboard, an mBed plus application board and soldering kit already. I’m not interested in 5-pin MIDI (plan on using USB MIDI via the application board), and there’s no way I want to have 3 separate PSU’s – I’ll contemplate step-down convertors but it must be a single rail main supply. So time to hit eBay to see what’s there at hobby prices. And the first find is that 10 red 1mW laser diodes cost less than £3 inc. P&P from China… Wow… This might just work.

An afternoon talking this over with Ben, and my initial BoM is as follows:

Item Link Cost
5v 4 phase stepper motor + controller http://www.ebay.co.uk/itm/331225282637 £3.59
10 x 11mm acrylic mirrors http://www.ebay.co.uk/itm/150898597818 £1.65
Laser receiver module http://www.ebay.co.uk/itm/390865498707 £2.99
Laser diode module http://www.ebay.co.uk/itm/251528583288 £3.49
5v 2A DC PSU http://www.ebay.co.uk/itm/350824599378 £3.99
2.1mm DC socket with leads http://www.ebay.co.uk/itm/281344574639 £1.19

Current spend: £16.90 – I could have spent less (or had more spare parts) if I’d have bought direct from China, but given that I a) need to keep the kids attention and b) am way too impatient when being given the chance to play with spinning mirrors and lasers, the above items are all from UK (re)sellers.

Potential pitfalls:

  • no fogging gear so viewing the beams may be tricky
  • low power laser may have high false triggers is the sensor gain is too high
  • no idea if the mBed timing is accurate enough
  • the 5v supply may not have enough current (no idea of the stepper consumption
  • still need to write the mBed software !

Although the pitfalls haven’t made me stop thinking about v2:

  • use green + red lasers to mark out a full tone/semi-tone scale
  • use green + red lasers for an effect/note split
  • put a carrier wave onto the laser and use a doppler detection routine at the sensor to offer pitch bend
  • make the MIDI output via WiFi to link into an iPhone/iPad as sound source for a portable version

Delivery of parts is expected this week, so project updates and pics of parts to follow…

History of Programming Languages

Awesome !

Seriously, the most accurate insights into programming languages that any non-programmer can use and start fights with as easily as if they had been programming for years:

http://thequickword.wordpress.com/2014/02/16/james-irys-history-of-programming-languages-illustrated-with-pictures-and-large-fonts/

(From a tweet from @computermuseum, whom you should both follow and visit, in any order you like as long as you do both. And not just because some of my donations may end up on display. That would be horrid self-aggrandisement)

Further Android Adventures (Goodbye iOS ?)

So the Nexus 7 was an experiment, and one that for the most part was a success but one that left my iPhone relegated to being used for iMessage and music (and the odd call, once a month or so). Given that the 3GS is a bit long in the tooth, and needs a new case, screen and battery just to last the year I decided it was time to risk a jump further into Android and pick a Phablet that would let me just have the one device to carry around.

The Samsung Galaxy Note II was the device I settled on, and so after a wait for SIM cutting I have now turned off my iPhone and gone Android entirely. Whilst the move from the iPad to the Nexus 7 was relatively painless, this has been the same and also almost the exact opposite – which is confusing…

The tablet part of the phablet experience is excellent, and the Exynos CPU in the Note II is either far, far better than the Tegra 3, or the software has been lovingly optimised to make the best of the platform.

The Phone part of the phablet is the most fantastically horrid experience I’ve had on any Smartphone, and this is from someone who has had a Windows 6 mobile upgraded with custom ROMs: the litany of broken UI and downright opaque behaviour shows how immature the Android platform is when compared to iOS. Apple may have made a total PR disaster from the Maps switch last year, but that’s peanuts compared to complex and unhelpful Contacts app the Note II ships with.

Yes, yes: I know I can download another 27 Contact programs as that’s “What’s great about Android”, except that it’s not what is great when we’re dealing with core functionality that is overly complex and inconsistent. The base phone experience should be slick, possibly spartan, and leave room fro a healthy eco-system providing those specialist tweaks and twiddle the manufacturer shouldn’t have to waste time programming for the 0.8% of the userbase that wants those extras.

Instead, we get multiple front-ends called Phone and Contacts that are actually the same program if you click on tabs inside (eh ?), and then allow you to have multiple sources for Contact info (Work address servers, Google Mail, Google+, Linkedin, Skype, etc.) which you can Join together, until you want to combine more than 5 and then you simply can’t. This is without trying to work out how Google mail and Google+ are suddenly different sources on a Google OS device, and how to get the name in the main list to show right entry (hint: pick the entry with the name you want to see, then Join other entries to that account as the order of name selection is vitally important).

Sending SMS is relegated to a hideously un-designed program that appears to send part written texts when a call comes in (ok, that could have been clumsiness on my part getting used to the phone). The default Mail app has the properly genius Peak and Off-peak entries per-account so you can prevent work email from auto-intruding out of hours, but then a fixed colour scheme that makes it hard to see new email, and a list font size that’s fixed whilst the email font size can be altered, but if images are present in an email it will never show the full page, but instead half-zoom just so that you have to pinch out at every viewing.

Admittedly that is mainly Samsung-isms: the plain email client on the Nexus 7 didn’t have the peak hours, but worked brilliantly at viewing email (it was poor elsewhere, but all email clients suck).

So this is a Phablet, with a gloriously large and easy to view screen, and to the designers credit they have large and easily viewable icons so that it’s not an exercise in visual ability to use the device, but unfortunately that’s where they stopped. There is no way to tame the ‘large print’ UI and stupidly huge and clunky notification icons that make the top bar of my phone look like some random modern art installation. The lock screen dominates to such an extent that the music player can’t even show a full album art image, just in case I feel like typing my PIN code in with my nose. No, I’m not trying to be elitist about relatively good eyesight: what I’m bemoaning is the illusion of choice offered by Android: the things that matter are fixed, and instead I can have multiple variations of things that are pointless in the hopes I’ll expend my effort customising the ringtone for each and every contact I have, instead of offering a nice, simple and usable overall UI scaling factor.

How to apply for a programming job

Note that the opinions here are my own: they draw upon real world experience at my current employer, but they are not their views, I do not speak for them and I’m far from the only person there who reads CV’s, so my suggestions should not be assumed to offer a quick route to an interview.

I’ve been interviewing for over three years, and in the past year I’ve spent a lot of my working time looking for fresh Graduates to hire. I’ve now read many hundreds of CV’s and carried out telephone, video and face to face interviews, and I can confirm first hand what you’ve probably already realised, and that is simply having a degree related to Computing in any way at all is no guarantee of a job. It’s not even a certain that you’ll get an interview, and it’s down to the skill sets of the applicant not being focussed in the correct way for the needs of the employer.

Admittedly the company I work for is looking for an odd bunch of skills (if we followed the mainstream view, we wouldn’t have been in business for over 20 years), and is very picky about who they make on offer to, but it’s no less specialist than the oft-mentioned Games industry.

So what can be done ? Right now that is – not waiting for the years it will take to shake up ideas from Primary tuition to Degree level and then have the students follow that path. Well it depends how far through the educational pipeline you are: if you’re about to start applying for jobs there’s less you can do than if you are at least a year away from graduating.

Immediate fixes

For me, the first task is for the candidate to properly read the job advert: I know and decry the fact that failed applications aren’t given any feedback, and am fully aware that I am part of that self-perpetuating problem. At the height of the application process I am reading over 30 CV’s a day whilst still being expected to turn in my normal workload on time, and despite my best efforts at maintaining an impartial attitude, too many ‘junk mail’ style applications remove a lot of goodwill.

This means that if you fail to write a targeted cover letter, or simply have a stock one with a company name search-and-replace, then you won’t be doing your best to grab my attention. I do still read them all, but do not assume that letter+CV is some magical formula for an interview: your CV is a reference for me, enabling me to ask questions that probe the level of your knowledge, and to ensure that you have spent your time learning skills that are relevant. The covering letter is yours and your chance to shine: this is where you refer to aspects of your life, non-degree skills and knowledge as well as the job advert, to prove that not only have you paid attention to the job, but that you a more interesting and well qualified than the other applicants.

Refer to things you have done outside of your education: don’t simply give me a job title from part-time work, or rehash what’s in your CV, but explain why your time spent polishing widgets after school gives you more skills for the job than simply having a degree in widget analysis. Don’t automatically assume that I know the details of the schemes you’ve been involved in either: stating that you “learnt loads” or “grew as a person” due to your participation in a recognised scheme a) tells me nothing of the skills you learnt, and b) assumes that I somehow magically know the details of all youth programmes all across the country, despite having been out of education for over half my life. Yes, this means you need to spend time on your application, but trust me: the effort will be noticed, and your application will get more attention as a result.

It’s also worth taking time to explain (in a very small number of words) what your course modules have taught you: you may well know what “CS306 UI Basics” means, but you can be sure I’m not going to try and find a prospectus for your University from the year you joined the course in order to find out what you were supposed to have been taught. Sell yourself to me, and give a list of techniques or skills that the module gave you, or a sentence describing what you gained if that is more helpful to an outsider.

Longer term solutions

If you have a year or more before you’re going to start applying for jobs, then you have a wonderful opportunity: show me how much better you are than your course mates: having 20 applications from a single course does show itself in the fact that the CV’s will be almost identical, and you need to show that you are better than the other 19 who are also “Proficient in C, C++ and Java”.

How ? Simple: if you want a programming job, show me your programming. That isn’t an invitation to bring in a printout of your coursework or to send me tarballs of your latest masterpiece – give me URL’s to code that you’ve written or contributed to. Do you have your own website ? Great: give me a link. Got a blog ? Are you sure that it’s work-safe ? Really ? Then refer to that too.

Ok, but maybe you haven’t programmed at all before starting your degree, and you don’t feel confident enough or have any examples worth publishing. No problem. Find an Open Source project or any online community that you have an active presence in and tell me about it. Perhaps you have spent time coaching others in the basics of some skill or task and simply helping out newbies in forums. That’s great: I actively seek those who will ensure that learning is a constant activity and not something that is only done when a lecturer is in the room.

My one caveat for online references is that you can be 100% certain I will not be signing up with my email address or joining any website in order to view your work. Do not assume I have, or will create a Facebook account just to see your work, and I will not be clicking through any legal agreements (no matter how trivial) in order to read source.

Sounds harsh and restrictive ? Hardly: there are a myriad ways to shine, through well thought out discussions (or arguments) on a mailing list, to patches or diff’s submitted to a project (even if rejected), to well reasoned articles or example help on your own website or in an online community. Talking about the latest CSS developments, or musing about how to take better photographs – it all helps and is part of something larger that previous generations of applicants never had: an online legacy.

Your online legacy

It’s brilliant. It’s scary. It’s here, and you have one: make the best use of it that you can. Googling (or Facebooking) the name of a prospective date has been a staple of comedy for a few years now, and you can be certain that any future employer will do the same. No, I won’t be looking at every applicant in this way, but if you have a well-written covering letter and interesting CV then I will want to know more about you.

Google has had an age based aspect to its weighting algorithm for long time: the longer a domain has been registered, the more likely it is that the content is useful and not part of some link farm. The same goes for you: yes, we all say things online that we later regret (no I’m not linking to them). I’m not looking for some artificial PR-generated online persona to be fed to me as part of the job application, but I would be expecting well thought out (even if incorrect) technical work. I’m not going to be a prudish censor or feel the need to report suspected illegalities, but bear in mind that the photos of you getting falling down drunk with your mates don’t need to be put on the top of the page with your latest code.

Equally, any future employer is not trying to be your friend: I want and demand your best work and attention in return for pay and a challenging and rewarding set of tasks. Don’t attempt to befriend me on a social network, or put your Twitter stream in your application (unless it’s a purely technical one) – keep your social and private life to yourself, and only show me the skills you have for the job. This doesn’t mean you have to live a Jekyll and Hyde online life, but simply keep one area of your online activities ready to be viewed by any employer at any time and do as you will elsewhere – remember that the length of time you stick at something is also relevant: showing that you have posted 50 helpful responses on a mailing list 3 weeks before a job application is not the same as having those 50 responses spread out over 12 months or more – the older the evidence of your involvement, the more compelling it is when supporting your application. It’s never too early to start.

WordPress, lighttpd and HTTP 500 errors

So this has been driving me potty, but thanks to this bug report and lots of checkbox clicking it turns out that the Google Sitemap plugin v2.7 from BestWebSoft breaks the admin backend, but the plugin from Arne Brachhold works properly.

Still, not impressed at the 100% opaque 500 response from WP: impossible to debug from browser logs turned up to the max 🙁

Peeko-Computer

Back in 1982, AcornSoft released a program designed to be a gentle introduction to understanding the internals of computer operation and 6502 assembly language. I found the original tape and manual a little over a year ago and it struck me that the sort of simplicity and clarity that the program brought to a fairly complex topic could still have a use today.

A couple of weeks ago I finally sat down and spent 8 hours or so on the task, and have come up with an HTML/JavaScript version, complete with a clone of the stunning 1980’s UI design (pictured above…) which not only executes the first two problems in the manual correctly, but has an extensible instruction set which allow experimentation and expansion of the original concept.

There’s lots left to do, not least of which is to continue with a more modern UI that is more touchscreen/mouse friendly than the keyboard driven affair of the original, so I have set up a public repo and mailing list along with a live demo:

Project: https://code.google.com/p/peeko-computer/

Mailing list: https://groups.google.com/forum/?fromgroups#!forum/peeko-computer-general-discussion

Live demo: http://minimal.cx/PeekoComputer/

Do have a play around and join in with the coding, documentation or just bring up your ideas for discussion.