Posted by Alec on 2 November 2009
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.
Posted in Business, LinkedIn, Personal Opinion | Leave a Comment »
Posted by Alec on 19 October 2009
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)
Posted in EEE PC, LinkedIn, Linux | Leave a Comment »
Posted by Alec on 2 October 2009
I’ve been using my ASUS EEPC 1000H for 10 months now and there are some obvious changes that could improve the form factor which no one seems to be implementing. So here is my $200 worth
- Remove the speakers — it’s hard to get decent sound anyway. I’m mobile so I don’t want disturb others and I always use headphones. Use the space for something else
- Use a trackpoint instead of a trackpad. Takes up a lot less space and is harder to accidentally hit when typing
- Try and make the screen a little taller so that it can display 1024×768. There are just enough applications that don’t work at 1024×600 to make this important
- Improve video playback — the form factor makes a great mini-TV but sometimes… Would this be a simple matter of improving the graphics card?
- Ship with 2Gb already!
- Oh .. and don’t bother with fingerprint scanners, there are more important things.
I’m happy enough with my EEEPC that it’s my main computer (but I have a big screen and keyboard to use with it, and I don’t use tools like Eclipse)
Posted in EEE PC, Personal Opinion | 1 Comment »
Posted by Alec on 1 October 2009
N.B. These are very rough notes. See also
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.
Posted in Git, LinkedIn | 1 Comment »
Posted by Alec on 4 September 2009
I’ve just had an article published by Sitepoint that aims to introduce Git to people who may not have programming experience and are more comfortable using a GUI rather the command Line. “Git: Your New Best Friend“
Posted in Cygwin, Git, Open Source Software, Software Development, Web, Windows, Work Practices | Leave a Comment »
Posted by Alec on 9 July 2009
After Perl Mongers last night there was a short discussion over tools. Here is my preferred list
- Vim editor
- Git version control (and GitHub to host my remote repos)
- Linux operating system
- Perl and CPAN for programming. Not a prefect language, but has wide applicability to the the types of problems I solve
- Google search engine
- Email (gmail)
- Bash and the UNIX command line tools (sort, find, grep etc etc)
- OpenOffice
- Paper journal/notebook (currently using a Moleskine, but I prefer a Miquelrius)
Posted in LinkedIn, Linux, Open Source Software, Work Practices, ego | Leave a Comment »
Posted by Alec on 21 January 2009
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):
- Download and unpack the source code. Pointer here
- Run ‘./configure –prefix=/usr/local’
- Run ‘make test’
- Ignore errors relating to not detecting unwritable repos
- run ‘make install’
- run ‘hash -r’
- Make sure it’s installed with ‘type git’ and ‘git –version’
Update March/09 — I found more detailed instructions
Posted in Cygwin, Git, LinkedIn, Open Source Software, Software Development | 2 Comments »
Posted by Alec on 17 January 2009
After some information from jim mcnamara I developed a script to compare two directory trees. I needed something that worked on Solaris 8 so it uses basic UNIX tools (and dircmp was not very useful). If you are using a more modern system then try this
#!/bin/ksh
# Compare 2 directories for differences (e.g. current release and new release)
CURRENT=$1 ; shift
NEW=$1; shift
CURRENTDIFFFILE=/tmp/$(echo $CURRENT | sed -e 's/[/.][/.]*/_/g')
NEWDIFFFILE=/tmp/$(echo $NEW | sed -e 's/[/.][/.]*/_/g')
# File pattens not to be included in compare
cat << 'EOF' > /tmp/patternFile
^.git/
^.*\.log
^logs/.*
^.*\.tmp
^.*\.err
EOF
for i in $CURRENT $NEW ; do
cd $i
# cut removed ./ that find puts at start of path name
find . -type f -print |cut -b3- |egrep -v -f /tmp/patternFile | sort > /tmp/$(echo $i | sed -e 's/[/.][/.]*/_/g')
cd -
done
echo New files
comm -13 $CURRENTDIFFFILE $NEWDIFFFILE
echo
echo Deleted files
comm -23 $CURRENTDIFFFILE $NEWDIFFFILE
echo
echo files that are different
# xargs has limitations so must pipe into a second shell
comm -12 $CURRENTDIFFFILE $NEWDIFFFILE | xargs -i echo cmp -s \"$CURRENT/{}\" \"$NEW/{}\" \|\| echo {} changed | sh
Posted in Change Audit, Linux, Software Configuration Management, Software Development | 1 Comment »
Posted by Alec on 15 January 2009
BBC NEWS | Health | Surgical checklist ’saves lives’
Using a simple surgical checklist during major operations can cut deaths by more than 40% and complications by more than a third, research has shown.
Does ANYONE need persuading on the value of a process when performing technically complex work? Including software development and service management…
Posted in Project Management, Software Development, Work Practices | 2 Comments »
Posted by Alec on 10 January 2009
Updated 6/Feb/09
I’m currently working on on a project to deploy some complex banking systems and we have some somewhere in the region of 40 environments (various testing, production and development instances)
I’ve written some Perl to automatically configure environments using Text::Template. Now I’d like to automate deployment and have some form of change auditing (c.f.AIDE or Tripwire).
So a new project (which I hope will also have some useful ideas for others):
- Project Outline and User stories
- General Approach using git (other tools could probably be used)
- Define a staging repo
- Create a remote branch of each deployment environment
- Create a repo on each environment
- Define a custom merge driver that overwrites (old files with new releases)
- For each release
- Create a new branch (overkill?)
- Add new release to new branch
- tag
- To deploy
- Merge (using new driver) onto environment branch
- tag
- Push to remote
- On remote perform
git reset --hard HEAD
- configure
- add and commit configuration changes
- on staging pull config changes from remote repo
- Now use git status etc. on environments to track any changes
- Staging should have historical record of changes
Posted in Change Audit, Git, Open Source Software, Perl | Leave a Comment »
Posted by Alec on 2 January 2009
I’ve has my EEEPC 1000H for over a week now and I’m so totally enamoured of the small device that it’s become my sole platform for all my computing. Obviously this has involved some adjustments.
- The keyboard requires considerable patience — at least for someone with my large fingers
- My fingers are having to learn new positions to try and stop keep brushing the trackpad and moving the cursor to somewhere completely different. This is currently the most frustrating aspect of using the machine.
Some things to try.
- Get a bluetooth mouse
- Try the LXDE desktop and the Xfce4 desktop. They are both tuned for low resource use
- Consider using DevilsPie to reduce the amount of screen space used by removing the title bar and forcing all screens to be full maxiumum, partucurly of your screen is smaller than 10″
- Configure Skype to use the hda sound devices
- Carry a short USB cable for thumb drives etc. Thy can’t always fit in space you have at the side of the netbook
- Get used to using keyboard shortcuts — it mush easier than using the trackpad
- Try using Vim and it’s plugins rather than a large IDE
- Try using an alternative email and PIM program to Evolution. Thunderbird for instance works better on the smaller screen and is faster
- Use multiple desktops and flip between them using <ctrl><alt><arrow> (Gnome default), for instance when referring to other material in the middle of witing an email. It’s an easier way of switching back and forth between two applications that using something like <alt><tab>
- Use the <F11> in Firefox to move into full screen mode (many other applications have a similar feature)
- Do as much as possible by typing at the terminal
Posted in EEE PC, Linux, Open Source Software, Software Development | 2 Comments »
Posted by Alec on 1 January 2009
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
- Create a new repo on Github for my project
- Follow the simple instructions to upload my project to github
To Do
- Update existing references to my projects I can find and update to point to the repo
- Add the correct license files
- Start again for as many projects as possible, please be patient
I’ll still keep presentation copies on Slideshare because that is much more convient for most people.
A big thank you to the git developers and github for making this so easy
Posted in Git, LinkedIn, Open Source Software, Software Development, Work Practices | Leave a Comment »
Posted by Alec on 29 December 2008
When programming it’s always a good idea to check return status to make that no error has occured. In Perl we often write
somethingWeWantToDo or die "we failed because .....";
However when running in a test environment we may not have all our infrastructure in place to make our operation pass when needed (ideally we should use mock objects or some other testing framework). A hack is to pass a flag into the program telling it that we are running in a test jig and we don’t care if our operation fails. The solution is simple, but a pain to work out after lunch…
somethingWeWantToDo or $testJig or die "we failed because .....";
If we fail and we are not using our test jig then we will exit with the appropriate diagnostics. i.e. failure is optional in a test jig
This is much easier than cluttering the code with conditonal if statements.
Posted in Perl, Software Development, Work Practices | 2 Comments »
Posted by Alec on 23 December 2008
Once thing that often confuses Dimensions CM administrators and users is how to set up and use an effective Design Part Structure (DPS). There is no ‘once size fits all’ answer but I hope the following comments will help guide people to a more comfortable structure.
Read the rest of this entry »
Posted in Serena Dimensions | 3 Comments »
Posted by Alec on 21 December 2008
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
- Boot from USB
- Install Ubuntu in the normal fashion
- Connect to wired Internet connection
- Get latest updates
- Follow these instructions
- You should now have a working EEE PC with wireless
To configure Evolution email use ALT-f at the end of each configuration screen (the buttons can’t be seen)
Try setting the panels to autohide this will give you a little more screen room
The EEE PC trackpad buttons are pushed from the front by the way, not the top.
Posted in EEE PC, LinkedIn, Linux | 3 Comments »
Posted by Alec on 20 December 2008
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
Posted in LinkedIn, Personal Opinion, Work Practices | Leave a Comment »
Posted by Alec on 18 December 2008
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.
Posted in Application Lifecycle Management, Business, LinkedIn, Personal Opinion, Software Configuration Management, Software Development | 2 Comments »
Posted by Alec on 11 December 2008
The Ultimate Social Media Etiquette Handbook: The Most Egregious Sins on Social Media Sites, Exposed » techipedia | tamar weinberg
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
Posted in Business, LinkedIn, Personal Life, Web, Work Practices | 3 Comments »
Posted by Alec on 29 November 2008
Now that twitter has become mainstream (Even the Australian prime minister has a microblog) it can be useful to consolidate all of a contact’s information into one place (instead having to monitor their blog, microblog, flickr account etc etc) which is where a service life FriendFeed (ff) comes in.
On ff you create create an account that sucks in all your other feeds (blog, twitter, identi.ca, flickr, digg, slidshare and so on) into a single place. All people have to do is to subscribe to that single account (probably via RSS or IM) and they get everything you are doing — not just your twitters. At the time of writing ff supports:
That’s all very well and good, but what if your network buddy does not have an account on FriendFeed? That’s were ff Imaginary friends come it. You can create an proxy account and then add the external accounts your contact posts on. All the account types listed above can be added and anything not in the list can created using the Blog type which expects an RSS or Atom feed. If you are adding a WordPress blog then make sure you follow this suggestion to get post titles to display correctly.
So currently I have 21 ‘real’ contacts on ff, but another 17 proxy contacts setup, including @stephenfry. Not only do I get his twitter posts but also notification of his wonderful blog posts, all in one place.
Posted in Web | Leave a Comment »
Posted by Alec on 3 November 2008
(Updated 5/Oct/08 and 11/Nov/08)
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
- Basic algorithms: Sorting, Linked lists etc, recursion,…
- Important design patterns
- 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)
- Maintaining personal work records in a log book
Further topics
- More advanced RDBMS use and schema design
- Embedded systems
- How to use LaTeX or Docbook
- Application engineering for quality (maintenance, extensibility, performance etc)
- OS design
- Requirements engineering
- UML
Further suggestions anyone?
Posted in LinkedIn, Personal Opinion, Software Development, Work Practices | 5 Comments »