Tuesday 31 May 2011

VeSPA


VeSPA is an open source software funded with public money. They are investing time, money and expertise into it. Something good is going to happen. Here is what the software manual says:
The Vespa package enhances and extends three previously developed magnetic resonance spectroscopy (MRS) software tools by migrating them into an integrated, open source, open development platform. Vespa stands for Versatile Simulation, Pulses and Analysis. The original tools that have been migrated into this package include:
- GAVA/Gamma - software for spectral simulation
- MatPulse – software for RF pulse design
- IDL_Vespa – a package for spectral data processing and analysis
The new Vespa project addresses current software limitations, including:
non-standard data access, closed source multiple language software that complicates algorithm extension and comparison, lack of integration between programs for sharing prior information, and incomplete or missing documentation and educational content.
I am interested into the spectral simulation module only, because pulse design is not my field (yet) and because there are already too many programs for processing.
Installing VeSPA is not an easy task. VeSPA depends on a lot of other software, which in turn depends on other software, etc.. You need a guide, which is this page:
http://scion.duhs.duke.edu/vespa/project/wiki/Installation
Install the 8 packages in the listed order. For some of these packages you will be prompted to install an outdated version. Resist to the temptation of installing the latest version, because this will break the inter-dependencies of the other packages. Installing the first packages of the list is a merely mechanical process: click to download, click to accept the license agreement, etc.. The last packages, instead, are written in Python and are a little more complicated to install. In my case, it was necessary to use the unix commands cd, su, sudo and exit repeatedly. Renounce if you don't know these commands. Such a complicated installation is quite discouraging. I see no reason, for example, why anybody should try to install the processing part of VeSPA, while other software is available that can be installed with a single click. I can see the other side of the coin, however, and it brights.
Instead that reinventing the wheel once again, they put together many bricks, old and new ones, that were already available. Do you remember this old article of mine?
There has been the terrible tradition, in our field, that every newcomer reinvents the wheel. We have seen a lot of simulation programs and nothing is available or working and supported. Now I welcome the VeSPA team because they have apparently embraced the opposite philosophy.
The big problem I see, after the installation, is that, at this writing moment, VeSPA is not a complete substitute for Gamma. The new program is devoted to in-vivo metabolomics. In theory there is space to grow and include what is left outside, yet this will not be easy in practice. Who is going to do it? Who is going to pay for it? I bet nobody will do.
The VeSPA web site is:

http://scion.duhs.duke.edu/vespa/

My current situation is: I have VeSPA installed but it's not what I wanted. I wanted Gamma. I have also installed Gamma in the process, but it does not work. If I try running gamma, I get the error message:

Apparently You Do Not Have A Proper Path Set To GAMMA......
Please Set The Variable GAMMA_PATH To Reflect The Base GAMMA
Directory, The One Off Of Which The Subdirectory share Exists.
This Change Can Be Done In The gamma Script You Are Running
Or You Can Set GAMMA_PATH As An Environment Variable.

Currently GAMMA_PATH is Set To /E/gamma/gamma-4.2.1


which means absolutely nothing to me, because there is no "share" subdirectory. I have tried to set the variable:
GAMMA_PATH='~/gamma'
and the error persists unchanged. The last chance was to use pygamma. Not exactly what I want, but they say it's equivalent to gamma and I remember having installed it in the process of installing VeSPA. My first attempt was:
pygamma
The answer: command not found.
Then I have tried something more... detailed:
python "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/pygamma/pygamma.py"
The answer was:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/pygamma/pygamma.py", line 7, in
import _pygamma
ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/pygamma/_pygamma.so, 2): no suitable image found. Did find:
/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/pygamma/_pygamma.so: mach-o, but wrong architecture

What kind of joke is this? They really have no idea of what a user is.
I have my theory why everybody writes his own simulation software: it's because nobody is able to install somebody else's software.

Saturday 28 May 2011

In lieu of any new Apple Jack related announcements (work continues apace), I thought I'd mention this amazing animation, one of the very few perfect things on the planet.

'Hedgehog in the fog' was made in 1975 by Russian animator Yuri Norstein, and concerns the adventures of the titular yozhik as he (I think it's a he) is drawn down into thick fog by the vision of a beautiful white horse. He meets various creatures in the fog; some scary, some mysterious, some helpful.

It only lasts 10 minutes but a lot is packed in, and you suspect that everything has some kind of deeper meaning beyond the simple adventures of a lost hedgehog. But who knows? It's all very Zen.


Norstein has won all sorts of animation awards (HITF has been named the best animated film of all time) and since the eighties has been working on an adaption of Gogol's 'The Overcoat'. But his productivity has shrunk to the point that he is now known as 'The Golden Snail' in his native Russia.

Let's hope that he eventually comes out with something amazing!

Tuesday 24 May 2011

VirtualBox

This piece of open source software is worth trying. It is not an application; it does nothing by itself. All it does is to create a virtual computer. Instead of buying a computer, you start a virtual machine. Think at the enviromental impact. You can even start many virtual machines simultaneously.
In my case, I own a Mac but have found some interesting games that require Windows. I have already tried BootCamp, that is perfect, yet I also liked the possibility of keeping my game open while I was working. It made no sense to buy a commercial software to run a free game, but Virtual Box is different, because it is free.
Advantages:

  1. Is free

  2. Is backed by a big company like Oracle

  3. Easy to install

  4. Many things work without the need of configuring them, for example when I install an operating system on a virtual machine, it is already connected to the internet

Limitations:

  1. I have found a program (Chessmaster) that does not run on the virtual machine. Maybe you will find other programs that won't run.

  2. Though the manual says it is possible to share a folder between the host system and the guest system I have not been able of sharing anything.


If I really need to exchange files between my real computer and the virtual machine, I send emails to myself. For this reason, I use the virtual box only for playing. Using it for real work is not practical, and probably it's not even safe. Anyway, for the average Mac user, there is no reason to use Windows for work. Maybe the the contrary is true, that is Windows users might need to install Mac OS on their machines. This is impossible, or at least not permitted.
Oracle is actively working on the VirtualBox and it may become a planetary success in the future.

Monday 16 May 2011

Re-drawing my own map: A new milestone

For every step you take towards mastery, your destination moves two steps further away. Embrace mastery as a lifelong endeavour. Learn to love the journey.
--George Leonard, Mastery
It is with a mixture of sadness and excitement that I would like to announce that, after over five years, I'm leaving Valtech on the 18th of May. The decision was not an easy one and took me months to figure out what the next step in my long road would be. As I said in a recent interview, I love working for consultancy companies and that's the main reason I spent over ten years (two-thirds of my career) working as a consultant.  

Working for Valtech

Valtech is a fantastic company to work for and had a huge impact in my personal and professional life. During my time there I had the opportunity to work on a great variety of projects, different companies, different industries and different technologies. Most importantly, I had the opportunity to meet and work with a lot of great people that helped me to become a much better professional.

If there is one thing that I will never complain about Valtech is that I did not have recognition for the work I've done. I have started at a Valtech in a relatively junior role, according to Valtech's grade scheme, and bit by bit, with a lot of support and trust from my colleagues I was given more and more responsibility and gradually climbed my way up to one of the most senior positions.

There is no such a thing as a perfect company but if I had to point out the best thing about Valtech, I would say that, beyond the shadow of a doubt, it is its people. People that I learnt a lot from, that helped me to feel at home in the UK, that helped me with personal issues, people that challenged me, that pushed me to my limits, that gave me constructive criticism, that trusted me and empowered me to do my job, people that helped me to be better.

I may not be in the office or in a client site full time any more but I will always be around. As it happened before (I took a year off to work on a startup idea and came back) I'll always be around for drinks and events.

Special thanks

I would like to thank you everyone at Valtech that had to put up with me for all this time. I know I can be a pain in the neck quite often sometimes. :-)

It's always tricky to mention names since there is always the risk of people left out feeling a bit upset but I feel that I need to thank some people in a more personal level, so apologies for the ones I did not mention. In no particular order: Toby Mckenzie for caring about me and every single consultant during tough times, all his herculean effort to keep every one happy, finding us good projects; David Draper for challenging many of my beliefs and opinions, for the many advices, for supporting my involvement with user groups and events and for the effort in making Valtech a place of excellence; Mashooq Badar for the fantastic time we had together in many projects, for all the things I learnt from him and for making me open my mind about so many things. Ah, and for all the Blazing hot! moments; Phil Hall for the support and keeping the doors open to me and LSCC; Kevin Harkin (I can't believe he does not use twitter) for the fun we had together, for his friendship, advices, ranting sessions and memorable nights at the pub; Andrew Rendell for his professionalism, trust and for being a great role model for every Valtech consultant; And last but not least, Akbar Zamir, for pushing me and challenging me to be better, for all the advice, trust, knowledge and help, for being a great career manager and most important of all, for being a great friend.

Thanks for the great five years that I spent there. It was an absolute pleasure to work with all of you and be part of this great company.

The future

It’s not just a question of conquering a summit previously unknown, but of tracing, step by step, a new pathway to it.
--Gustav Mahler, musician and composer
I'm joining UBS as a senior developer at a director level, starting on the 23rd of May. Due to my involvement with the software craftsmanship movement, this came as a surprise to many people, including myself, mainly because investment banks tend to be almost a hostile environment for agile and software craftsmanship initiatives. When I started re-drawing my own map, investment banks were an avenue that I was not considering to explore.

As I said before, choosing my next step was not easy. I had a few things in mind that were non-negotiable: I wanted different challenges, that means, things that I haven't done before, keep having fun and loving my job, a potential long term commitment where I would have time enough to put into practice many ideas and beliefs and most importantly, have a long term career as a software developer but with a lot of space to keep growing as a professional.

I was fortunate to have had many opportunities during this time but the majority of them could not satisfy all the items above. I was determined to keep doing what I had been doing throughout my entire professional life that is just to work for companies that I really want to work for, I mean, companies that would be able to offer me what I was looking for at that point in time. For me, that's the best way to keep fuelling the passion that I have for what I do. Joining a company just because of money is and always has been totally out of question.

UBS came along with a very interesting proposition. They want to improve the quality of their software and recognise that agile and software craftsmanship are a great way to get there. They were interested in people with no previous investment bank experience, what is very unusual for an investment bank. They want people that can think different, that are passionate and can help them drive this transformation. I had five interviews and was very pleased to see so many people striving to be and do better.

As far as I understand, my main role will be to work as a hands-on developer, embedded in a team, helping to improve quality, leading by example and mentoring other developers. They also expect me to give internal talks, training, promote events, disseminate passion and promote the craftsmanship values and techniques. In the future I'll be working with other teams in the UK and in other offices around the world. But make no mistake. I'll have a hell of interesting and tough challenges ahead of me and I hope to live up to all their expectations.    

Besides that, I'll keep running the London Software Craftsmanship Community (LSCC) alongside my friend David Green and try my best to give something back to the wider and great community of software developers out there that some many times I benefited from.

Thanks everyone for being part of long road journey.

Sunday 15 May 2011

The hardest thing about programming the first Apple Jack was that enemies could be picked up and thrown anywhere, even into parts of the level that no sane designer would think to place them. This meant that I had to spend a lot of time tuning each type of enemy to work everywhere and not get stuck in a corner, or walk through a wall, or escape the play area altogether and crash the game, the little sods.

Now let's add pushable, stackable blocks to the above scenario.

Done that? Now add moving platforms that can ferry the player, the blocks and the enemies around the level in different directions and speeds.

Now add switches that can make the moving blocks suddenly disappear when pushed on by the player, enemy or another block.

And now factor in the fact that I'm a complete idiot who doesn't plan ahead and just adds stuff in willy nilly while adjusting older code in the vain hope of making it all somehow work.

My next game after this is going to be a text adventure or something, I swear.

Saturday 7 May 2011

As a personal service to my one follower, uramyx, the following screenshot of the forthcoming Apple Jack sequel MAY ONLY BE VIEWED BY HIM.

If you aren't uramyx you must under no circumstances look at this shot of Apple Jack at the seaside, or imagine the clouds slowly drifting across the screen, casting shadows on the water which itself laps at the beach while the blades of the wind turbines revolve:


 Everyone else, move along...

Wednesday 4 May 2011

Open-source developers deserve respect

I was recently reading Gojko Adzic's blog post called How is it even possible for code to be this bad? I must admit that I was very sad to see tremendous lack of respect towards the Hudson/Jenkins community and towards open source software developers in general.

Firstly I would like to say that any person out there that is working on an open source project deserves a lot of respect, mainly the ones working on projects that bring so many benefits to so many companies and developers around the world. The velocity that our industry moves forward and evolves is, in general, because of many open source initiatives. It's because of thousands of developers that work on the their spare time, for free, to create software that will make the lives of many other developers, companies and users much easier. These people are kind enough to offer their work to all of us and are humble enough to ask and accept help from many other developers around the globe.

One thing we need to understand is that every project has a history and many things, throughout the lifespan of a project, can be responsible for the success or failure of a project. It's always easier to criticise something instead of trying to help and make it better. As far as I'm aware, I don't think that anyone in the Hudson/Jenkins community ever claimed that their code base is the best example of quality software ever written and we all should learn from them. If that was the case, probably it would justify such harsh words written in the original blog post

The only acceptable form of criticism towards any open source project or developer is constructive criticism. 

If we think that a open source project is below standard and/or not good enough, we should either not use it or we should contribute to make it better.

However, I do understand the point Gojko is trying to make. Yes, I agree that good code is not the only thing that makes a project be successful. I think we all could name a few projects that we delivered where clients and/or users were relatively happy but the code base was a bit messy. There are always exceptions to the rules. Trying to get our code as perfect and as clean as possible does not guarantee that our projects will be successful and having a messy code does not always mean that our project will fail either. We all know that. Even my 5 month-old baby girl knows that.

However, I totally disagree with Gojko's statement that "[Hudson's success with "bad" code] is close to the final proof that God doesn't exist for the whole craftsmanship debate". It is almost like saying that Agile is rubbish and everyone should forget about it just because some waterfall projects succeeded. It is like saying that we all should forget about good principles of software development just because some projects succeeded with messy code. In summary, is like trying to get some exceptions and transform them into rules. There are many ways and many things that can contribute to the success of a project. Software craftsmanship is one of them and a very important one. In a software project, the most important thing is the software itself and looking after its quality is an obligation of every developer involved in it.

Although software craftsmanship on its own may not be enough to guarantee the success of a project, the lack of it can be reason for its failure. Single-handed.

Another important point we should ask is the definition of a "successful project" and in which context or environment but I'll leave that for another post.

If exceptions invalidate rules and that is the way we should look at things, does God exist for anything in software development?

Cyberduck


Though you can easily move your spectra with a USB memory stick, the ancient FTP protocol is still the most popular way to transfer data from the spectrometer to the PC (or laptop) where processing is performed.
When I started my first NMR experimentations, FTP was not available: local networks were extremely rare and the spectrometers didn't even contain an operating system. So you can guess I have used many FTP clients in my life. During the last 6 years, however, I have been using Cyberduck exclusively, not just because it's free (actually I donated my shareware fee long ago), but because it never fails. It's also very easy to use: the icon gives the exact idea of the complexity of this program.
Over the decades I have always received the question: "Why can't I open my spectra on my PC/Mac?". The last time it happened was this morning. The first thing I say is: "Check your FTP client", because this is the most common cause of the trouble. The second thing I say is "Switch to a SERIOUS program like Cyberduck" (I wonder what they think about the icon). Most of the times I discover that the other guy is using "Filezilla", something that I have never seen but must be a terrible piece of crap, considering the countless troubles it has caused along the years. Nobody ever thinks about the FTP client; the innocent NMR program is the one the receives the blame, instead.
When you are using the wrong client, or the right client with the wrong settings, your files arrive with a different size (this fact alone should ring a bell) or with some bytes changed. One of the great things about Cyberduck is that you don't have to care about settings. It just works out of the box.

Sunday 1 May 2011

And hot on the heels of my first post comes this second one, only six months later! Why mister ambassador, with your two posts a year average you are really spoiling us!

My Owl Software is proud to present this first screenshot of what is currently called 'Apple Jack's Great Escape' but may end up being called something else:


 Here we see Jack trying to push some stacked blocks to use as stepping stones to clear a tree stump, while a huge panda stomps towards him in a forest.

While I'm not going to give you a full feature list right now, rest assured that all the moves from the first game will be present and correct, alongside lots of new features. Please look forward to it, as they say in the orient.

Much is left still to do, but I'm currently cracking on with the drawing and soon, after a bit of code-tightening (alright, a lot of code-tightening), I'll be on to designing the levels which is the most enjoyable bit for me.

More screens soon. Au revoir!