Please Note: I am NOT a social media guru, or any of the other meaningless titles the no-hopers give themselves on Twitter. I’m just a geek who can spot the obvious, especially when it’s pointed out.
At 07:53 PDT this morning the site was hit with an abnormal number of SSH connections. The script that runs after an SSH connection is accepted makes an RPC call to the backend to check for the existence of the repository so that we can display a nice error message if it is not present…
This is the a post from the GitHub team about a recent problem that affected many of their customers (of whom I am one).
As you can see from the comments attached to the above post, GitHub’s strategy of open communication pays dividends in providing
Positive customer feedback, even when there is a problem
Customer loyalty — everywhere on the web (just do a Google search) GitHub customers, including me, are happy to recommend them
Now obviously GitHub offer a great product as well, but the point I want to make is that social media is all about transparency and authenticity. It’s not rocket science but I shudder to think about the number of organisations wasting money and falling at this basic level.
Incidentally, GitHub’s message content is appropriate for their customer base — who are a right bunch of geeks. Yours should be appropriator as well.
I have just installed Ubuntu Netbook Remix 9.10 beta on my EEEPC 100H and so far it’s been a great experience. Things that work better out of the box
Synaptic touch pad
LCD Fonts
Remix user interface
Network printing
Performance
Suspend/Resume
Bluetooth device setup
I also have reason to believe that the sound works better in Skype, but I’m still kicking the tyres on that
Improved Applications:
GNOME Evolution now works well on the smaller screen
Gwibber is much more useful for microblogging but it needs some work on reliability and performance
Eclipse 3.5 now installs out of the box
BOUML is now up to date
A few odd things that it would be nice to see fixed
Evolution sometimes looses it Window border. Something to do with the Remix window manager I think
Some things I had to try a second time before they settled down. E.g. 3G network management, bluetooth mouse setup (but that was probably finger trouble on my part), Skype sound
All in all a great release. I love it!
(20/Oct/09 — added comment about Gwibber reliability)
Sometime ago I shouted my mouth off at a local Perl Mongers meeting that using custom merge drivers it would be possible to auto merge OpenOffice document from Git, which seemed to interest some people greatly at the time.
However I then backtracked because I failed to take a few things into account. After some more investigation it turns out it should be possible (with some wrapper scripts and OpenOffice programming) and I *believe* the following approach stands a chance of working (I’m hedging my bets here)
1) Create a wrapper script that opens a document, switches on change recording and saves the document, called say changeRecordingOn
2) Create another wrapper script that takes two documents (a and b), runs the OpenOffice Edit->Changes->Merge Document function and saves the result as c, called say ooAutomerge(a,b,c) (NB Base revision is useless)
3) Create and associate a git custom merge tool for .odt and .ods files that runs ooAutomerge(). Might also need a custom merge driver?
4) Create a pre-commit hook that runs changeRecordingOn for all .odt and .ods files
When running a git-merge and then git-mergetool the OpenOffice GUI should be presented with a list of changes to accept/reject, which is much easier
NB It seems that running the OO merge and saving file c removes the previous change history. This means that if the file is merged again then the user only sees the new history since the last merge (which is what we want)
I doubt I will need this feature for some time so I don’t intend to take it further at the moment — however if you have a need, these notes might be useful..
I hope this makes sense? Apologies if I just swallowed two minutes of your day that could have been spend doing something better.
The current version of git installed with Cygwin (1.5.x) has at least one annoying bug so it’s worth building the latest version (NB I have almost all of Cygwin installed – you may need to install additional development tools and libs):
This week I at last did something I’d wanted to do for a long time and release some of Voga’s intellectual property to the wider world.
I have already made material available either through this blog or via Slideshare. However for a geek it’s obviously better to publish complete projects in an Open Source manner so they can be freely copied, modified and shared.
For historical reasons this had been inconvenient to do as I used to hold everything in a single Subversion repository. Not only did this contain my potentially open material, but also my customers private data and my business records (yes, I keep my accounts database in a version control repository!). A few months I migrated my Subversion repo to git, but I still had a single large repo and no time or skill to fix it.
However today I bit the bullet
Removed all my possibly public data to another directory structure
Tidy up my current repo by removing all the old ‘trunk’ directories — as a solo consultant I was lucky and had never had to branch my projects. Commit my new streamlined repo
Now to work on the the public projects
Identify a complete project and make sure it had no proprietary data. This is potentially time consuming
Tidy up some of the names
Create a new git repo; add the project files; and commit
The 10″ EEE PC 1000H makes a good choice for people looking for a notebook with a little more storage and bigger keyboard than Asus’ previous model. Unfortunately, whilst the local Harvey Norman had a good price, I was still forced to pay the Microsoft tax. So the third job after I got home (after upgrading the BIOS and checking the hardware worked ) was to install Ubuntu 8.10. The process was pretty straight forward because I had a current Ubuntu system to create the USB boot disk and a wired network connection so that I could install the wireless tweaks. However it took a fair mount of Googling to hopefully this should save some folks a bit of time.
Get a copy of the 32-bit Ubuntu 8.10 ISO image. I used the Desktop version, alternative should work fine as well
Use the Ubuntu System->Administration -> Create Startup USB tool to copy Ubuntu to a USB stick
Shutdown Windows on the EEE. I had to do this via Windows shutdown to get the correct prompts on power up
Power up the EEE with the ESC key pressed. You should be prompted for a boot device
When you work from home there are various things you need to do to look after yourself:
Identify what you need to stay sane and make sure work out how to find or do it
Set up networks of friends on services such as twitter or facebook. Spend a limited of time each catching up with them — but be careful not to let it affect productivity too much.
Make sure you get out off the ‘office’ for coffee breakfast or lunch. I like to go to a local coffee shop
Join various groups relevant to your professional or personal interests and consider attending group meetings. IT people based in Melbourne can find a list at Perl Net
Set boundaries to help you switch off from work and do something else. Having an private office and defined office hours can help
Make sure that the people you live with understand when you are work and can’t be usually expected to join in other activities
Be flexible and break the schedule and work practices sometimes. After all flexibility is the main reason to telecommute
He also helps to create a decent working environment (space, light, furniture, storage, IT systems). I made some notes on this
The analysts and tools vendors have been talking about Application Lifecycle Management (ALM) for many years now and I think they have (of course) been somewhat self serving in their definitions. ALM seems to include whatever product category they have in the current price list and then promising their integrations’ would be managements answer to cost and governance issues. I hope to say more about integrations in the future, but I’d like to look at the scope of ALM for now.
If you ask vendors and consultants (including me) about ALM scope you’ll get answers such:
Requirements engineering
Software Configuration management
Dependency Tracking
Change control and work tracking
Test management
Software development tools and process
Software building and processes
Deployment
Process Governance
Depending on the vendor you might even get more traditional: Project and Program Management; Project and Application Portfolio Management/Analysis; and Service Management activities thrown in as well.
The usual sales pitch is that everything is managed via a common tooling and provides a common repository. The major, and often single, selling point of this approach is improved governance and business oversight of the SDLC.
However I think it’s useful and important to look at the definition of ALM from a customers perspective rather than as analysts or vendors.
It seems that a more pragmatic approach is to describe ALM as the methods, processes and tools that support the management of change for software systems — with particular, but not exclusive, emphasise on the SDLC. In this context it does not matter if we are using Agile or Waterfall approaches, we chose the best tools and processes for our particular situation. This of course implies that in eighteen months time we may need to re-tool.
Furthermore the methods tools and processes of project management (PM) are much more mature and there is no real need to include them in this evolving segment — they have their own. Obviously PM will have an influence and impact on ALM and we need to design our ALM approach to dovetail with it. I realise that most vendors will not agree with this.
I have come to the conclusion in order to ’sell’ ALM into the teams that will use it we need to ensure, front and centre, that ALM provides a ‘better/faster/more’ improvement in daily productivity. That should be the primary focus of what is delivered.
Governance, audit etc should be secondary attributes and natural site affects of using ALM (important though they are of course and usually the primary sales message).
So at a practical level we need to be able to provide teams and their specialists with the best tools they need to do their job. Additionally we need to provide a supporting layer of data flows, events and data repositories to
Assist teams with traceability
Provide the tracking and management visibility to effectively steer the ship
So the point of this post is to plead with vendors to stop selling a one size fits all tool suite with deep integrations and start enabling shallow API and effective integrations to allow a truly best of breed approach for customers software purchases. It’s a shame that ALF project is shuting down.
Forgetting that some individuals won’t network with you on a “personal” space like Facebook without knowing who you are, even with the proper introduction. If you’re looking to establish a professional relationship with someone, consider LinkedIn. Otherwise, consider building up a rapport with an individual before randomly adding them as your friend. Some people require face-to-face meetings before they invite you into their private lives. After all, Facebook was a tool that college students were using before it was open to the public, and some still use it as a purely personal and not a professional tool. LinkedIn is still seen as the more professional of the two.
I am one of these strange people, so please don’t try and initiate a business relationship with me on facebook. However I’d be delighted to consider a professional connection on LinkedIn
I occasionally ponder on what skills and knowledge a novice who wants to become a skilled developer should acquire. In no particular order here is a suggested list of things to consider:
Basic accounting: This is useful from both an IT perspective — a lot of IT systems are used for financial management; and from a general work perspective because it helps with your future in business
Version control concepts and tools
Waterfall Software Development Lifecycle (SDLC): Requirements, design, building, testing, release
Agile SDLC such as XP and/or Scrum
How to use a command line
Basic compiler architecture — the 7 phases of compiling
Data representation: Number bases (binary, Hex, BCD); character sets; XML markup
Testing and quality as a substantial stand alone topic
Programming in at least three languages: C (or Java, C++, Ada etc), Perl (or Python, Ruby etc) plus one other (e.g. Lisp, Haskell). At least one needs to be an OO language and OO programming should be a familiar habit. Perl does not count as OO for this discussion.
How to use a word processor and spreadsheet
Basic SQL, RDBMS architectures, 1st, 2nd & 3rd Normal forms and basic DB schema design
TCP/IP networking and basics of http, email, ftp, etc. Needs to include conceptual understanding of DNS and related security issues
Basic IT security concepts
Basic IT System Management
Personal task and work management (e.g. GTD or GSD, suggested by Sinewalker)
When you travel any distance with a laptop it helps to have some good habits for packing, carrying and using your computer
What to pack:
If you travel abroad then a universal mains socket adaptor is required. I quite like this one, make sure it’s as robust as possible because sometimes they can be a little fragile.
USB Charging cables for phones, iPods etc. Saves taking the mains based charger and having to share the mains adaptor when abroad. Some laptop BIOS settings allow you to configure the USB ports to supply power even when the laptop is off or on battery, which is useful for overnight charging but you can flatten your laptop battery so be careful
Security cable for laptop. I prefer a combination lock to avoid having a key to lose. Get one with as long a cable as possible as anchor points sometimes need a stretch
If you use a mouse then get a smaller laptop model to pack — it could save you get getting RSI using the built in trackpad or trackpoint all the time. The really small laptop mice may be too small for prolonged use or larger hands so check before buying.
A small mouse matt. Hotel room desks etc. are often covered with glass (or worse dirt) and will not work with laser mice so get a small mouse mat. Pack it so it stays flat
I have always carried a spare LAN cable, however I am using it less and less as wireless becomes more common. Depending on the places you go it can be useful, especially in hotel rooms, but beware buying retractable cables (sight unseen) as some are bulky.
Have small bags to place cables and mice in. It makes finding things a lot easier. Ziplocks plastic bags will do when you can’t get nylon or cloth
Headphones can be useful for music and VoIP calls (needs a mike as well). I don’t recommend USB headphones as they may be bulky and take up a sometimes precious USB connection. You need to experiment to see if a bluetooth headset works for you. If you can spring for headphones that work on the plane as well that’s a bonus but I have not bothered for a number of years as airlines now provide reasonable quality headsets (ignoring issues of noise cancelling headphones). It seems to be hard to protect expensive headsets without bulky cases so I get cheaper headsets and save the space.
Consider the use and packing of a 3G modem. In Australian hotels broadband access can be very expensive (A$20-30/night) and with the added convenience of 3G it can make a lot of sense. Shop around for the best deals. In the US free wireless access seems to be included as part of the hotel package — but check before leaving. And check how much 3G access costs when using global roaming, it can be VERY expensive.
Avoid wrapping the power leads tightly around your power brick — it stresses the cables and causes failures (I had a colleague who did it all the time)
Have a specified order and placement for all your items in your luggage. Do it enough and you won’t have to think about it and you’ll know were everything is.
Invest in a good quality laptop backpack. It will save your spine from being pulled to the side and leave the hands free for other things. Business travelers can get smart, black, bags now. It should have a padded laptop compartment, or use a laptop sleeve. In addition make sure that the bag has enough additional packing for your other travel needs. e.g.
Paper notebook/journal/Filofax
Pens
Paperwork (use file folders to protect loose paper sheets), magazines and books
On longer trips passports, toiletries and spare plastic bags. I wrote some additional notes on trans-Pacific travel earlier
Anything else that supports your travel flow and work flow.
N.B. When travelling, even with carry on luggage only, assume you will loose access to your suitcase for 24 hours and need to work/live as best you can from your backpack
Lastly make sure that you have the correct work processes and tools on hand to make the best use of your time away
Open Source Industry Australia were kind enough to invite me to present last week on pre-sales demonstrations techniques. My main message was about delivering a Value based message — which is explained rather well by the following
It’s actually more than a year since I first blogged about social networking and the world of web 2.0. The web, and the practices that surround it, have moved on so I thought I update my thoughts as well. By a strange coincidence, just as I was starting this post I came across crazeegeekchick’s thoughts on how to use social networking — well worth reading before you carry on.
Generally social networking has been a huge consumer of my attention and time; and to be honest I don’t think the medium given me a very good return on my investment, except as a learning exercise.
LinkedIn has become an online list of business contacts. But of limited use because I can’t add my own notes to profiles. I have had some networking activity — but to be honest it has not made a huge amount of difference to my working life. I think now the number of people on the service is becoming so large anyway that it’s becoming less useful, but I hope I’m wrong
Updated 13/Nov/08 — You can now add notes to your LinkedIn contacts
Facebook has become pretty pointless. I don’t have time to become a zombie and most of the other stuff I do use is not terribly useful. e.g. I just became a facebook fan of Gordon Ramsay — but so what? Nothing happens much.
Blogging gives me a certain amount of satisfaction and I often refer back to my old blog posts for information. I also know that a few people have found help from ramblings so I count the blog as a success. However it’s rare for me to get over 100 readers a day so it’s not a huge success
Lifestream (twitter, jaiku,identi.ca). This is very distracting and I need to find some way to stop keep looking at my friendfeed stream. However on the positive side it does provide me some of the support that I miss being a solo worker. It’s probably a good idea to whittle down my ‘posse’ to as few as 10 people to reduce the noise; question is which 10 — I’m generally pretty choosy who I “friend”. Problogger has a site introducing Twitter, and by extension most of the other micro blogging site, and Silkcharm also posted some suggestions
Geo Location (e.g. brightkite, dopplr). I am just so over that. In Australia it’s hard to use anyway because we have limited network coverage and I don’t have an iPhone. I keep thinking they a potentially huge personal security issue as well
I have accounts on delicious and flickr which I find useful. Delicious in particular has proved very useful professionally and personally.
As I mentioned earlier the major upside is that I now think know a lot more than the general population about this stuff — perhaps I can become a media pundit? Easier than doing real work, talking of which…
Here in Australia it takes us over 14 hours to fly to America and there are a few little wrinkles and things you can do to help make the trip a bit easier. There are of course many, many, other sites on the intertubes with further suggestions:
Invest in some decent carry on luggage so you don’t need to wait at the luggage carousel. It can be a long wait and if you do an internal flight as well that’s twice you need to wait for your luggage. I carry a laptop rucksack and a small suitcase — I can live for weeks from that. If you are travelling to West Coast US on business then you never need a suite or tie anyway.
Copy the details of your passport, flight number (or use your boarding pass), return dates and hotel address into a sheet of paper so that you can fill in your US immigration and customs documentation. Also have a pen handy
Ask the cabin crew if you can get your US forms as quickly as possible during the flight. It’s easier to fill when you are fresh and less tired. NB This usually doesn’t work — they have a process and you can’t upset it!
Don’t eat too much before flying. It can make for an more uncomfortable flight and takes longer to recover from jet lag.
Take a plastic carrier bag with you and put your shoes in it, then place in overhead luggage bin. They are out of the way for the rest of the flight, easy to find at the end and you don’t upset other passengers rubbing your dirty shoes on their luggage
Collect as many of the travel amenity kits as possible whenever you travel and carry one or two in your hand luggage. This is useful for two reasons:
You can change out of your shoes and into flight socks before settling down
Far fewer flights now offer these kits anyway
Try and sleep if possible (I never can)
I always find it hard to work in economy so make sure you don’t have expectations of getting lots done
Use a lip salve and skin moisturiser if needed
Updated 10/Oct/08
Consider wearing trousers with large patch pockets on the legs so that bulky items (e.g. wallets and passports) are located at your knees and you don’t have to sit on them for 14 hours in your back pocket
I am using emacs with the tramp extension to edit files on a remote server using ssh. I had to pull in various hacks to get it to work so I hope these notes might help others.
Upgrade emacs Tramp to the latest version. This is best done using Cygwin bash and Cygwin make (in particular ensure that –with-lispdir and –infodir options are set correctly when running configure).
Handy tip — leave the tramp build directory hanging around. When you next upgrade Emacs it’s just make install (providing you use same directory names)
Ensure that the Cygwin bin directory is on the Windows system path
At the Cygwin bash prompt test ssh connection to your host
Getting rid of the “Couldn’t find exit status of `test -e …” error message by deleting ~/emacs.d/tramp file. This clears cached settings as documented at http://www.nabble.com/Emacs-tramp-troubles-with-old-Sun-tt13607411.html.
If Tramp and Emacs does not work for you try these alternatives:
Andrewdiscusses the use of a ‘laboratory’ style notebook for software development. His suggestions are excellent, but should really be taken further, especially for junior developers.
A developers log book should record a variety of information
As mentioned by Andrew below this is all too hard now that we have the chere utility. At the cygwin shell prompt try the following
chere -i -c -n -t rxvt -s bash -o "-sl 2500 -fg lightblue -geometry 80x25 -bg midnightblue -sbt 10 -title bash" -e "Open Bash shell here"
If you want a shortcut to run bash for your home directory try
C:\bin\run.exe C:\bin\rxvt.exe -sl 2500 -fg lightblue -geometry 80x25 -bg midnightblue -sbt 10 -title bash -e /bin/xhere /bin/bash.exe %HOME%
I took this hack and this hack and combined them to make the following hack. It works on both directories and drives in Windows Explorer, and creates a visually attractive login shell (at least I think so).