Goals (climbing update)
Well the end of June has come and gone and I’m posting to report that I kind of did and didn’t get my climbing goal of V5 by the end of June.
After I set the goal and started training and reading more I realised that the first part of the goal could be achieved on two levels and really I wanted to do the harder version. Basically I originally thought I just wanted to climb a V5 which I managed to do, but in reality due to the way route grading works I feel I actually need to be climbing at a consistant V5 level to say that I can really climb that grade. I would now say I’m a pretty good V3 climber starting to push into the V4s without too much trouble.
So I suppose now I’m aiming for the end of year target of climbing a V7. For the moment I’ll leave it at climbing a V7 rather than being a consistant V7 climber, maybe I should aim to be a consistant V5 climber with a couple V7s under my belt by the end of the year, think that would be a pretty decent achievement in itself.
Goals
It’s nice to have goals in life, something to aim for. I’ve been noting down various things I want to do for some time now but have never really got around to doing any of them, so I decided to pick 3-4 goals off my list and see if I can achieve them this year. So without further a do in no particular order here are the goals I’ve picked for myself.
- Write a game for the iOS platform and get it into the app store before I’m 30.
- Create a website from scratch using some new and up to date web technologies.
- Climb a V5 before the end of June and climb a V7 before the end of the year.
So there are the goals, now I’ve just got to achieve them.
The big 30 seems to be my scary age and for whatever reason I felt I needed to have some kind of personal achievement under my belt before I get there. I love games and I also love my iPhone so I thought what better way to achieve a goal then to make a game for my iPhone and most importantly get it onto the app store. While it would be great for it to become an over night success and allow me to retire on a desert island somewhere I very much doubt that will happen and have my mind firmly in reality, a few sales would be good enough for me, just to know that some people out there have bought and enjoy something that is 100% mine is good enough. I’ve already started writing the game and so far it’s actually starting to come together OK, I’ve still got lots to do but I feel I’ve managed to learn enough Objective-C and Cocos2D to be able to get past that beginning stage when you’re learning a new language or framework, less time looking at documentation and more time creating. Once I have anything even slightly impressive to show I’ll get it posted on here for all to see.
Before I went to University I used to do a bit of web design here and there for local companies, it was just as the Internet was becoming more widely available in homes across the UK (good old 28.8) and web pages were mainly HTML and some images. Well since then the Internet has become a different place and I’ve become out of touch with the languages and techniques used to make web sites. While I don’t really need to learn any of these for the job I do, I feel that I’m ignoring a huge amazingly interesting media. Therefore I decided some time back that I wanted to get back in touch with some web goodness. I already have an idea for a site I’m going to make, it won’t be huge but it will allow me to experiment with a whole lot of front end web technologies as well as having a play with some cloud based services. I will be doing the back end for the site using the Python API for google app engine, I’ve never written anything in Python before so I thought it would be a fun experience and opportunity to learn something new. At the moment I believe the front end will be a combo of HTML, CSS and JQuery/Javascript with some form of AJAX to get the data from the back end. The domain name and everything else is sorted and now I’ve just got to get coding. I’ll probably be keeping this one under wraps until it’s ready to launch with maybe some progress updates as I go. Might even do a retrospective post once I’ve finished.
I’ve been rock climbing (bouldering to be more precise) since late October last year and it has become somewhat of an addiction and obsession. For those who know anything about bouldering I’m currently climbing at around V2 with a few V3 climbs under my belt. I would like to be climbing V5 by the end of June, no particular reason for the end of June just a time I chose to give me a target. I’m not currently sure if I’ll get this one as I’ve got to gain a lot of strength and technique to be able to achieve it but it’s always good to have something to work towards. I’m going to be changing my training from two days a week to three and I’ve purchased a recommended book on technique and training, so hopefully all those things combined will bring me towards my goal. If I managed to achieve V5 by the end of June then the next target is V7 by the end of the year, this will be a hard one as from seeing other people climb and generally looking at the routes I’d say there are some reasonable steps in ability between certain grades, V3 seems to be the first step (at least for me) then V5 then V7, so I’ll have to really push myself to get there by the end of the year, we’ll just have to see how it goes.
iPhone, Android, Windows Phone 7 developer argument
I’ve been seeing a lot of arguments flying around blogs and twitter just lately about which mobile platform is best to develop for and how supposedly certain platforms are destine to fail so all developers should jump ship and move from platform X to platform Y.
I’ve just started doing some iOS development myself and I’m already pretty convinced that once I manage to finish my project I will probably have a go at porting it to another platform. You know why? Because regardless of how good I think platform X or Y are or for that matter how bad they are there are, people out there using it and not just a few people a significant number of people.
In my mind apps be they native to a platform or web based are all about spreading an idea to as many people as possible implemented in the best way possible. As a business it is surely dangerous to ignore a platform due to your own personal perception of it. I can understand why a business might not release on every platform because it takes time and resource to port these applications (web based ones maybe not so much), but I think it would be wrong to ignore them through some kind of loyalty to a particular brand.
Over the years I’ve developed in lots of different languages on many platforms. I’ve made various APIs for customers to use and have had to port them over to various languages and platforms and regardless of my views on those platforms the point is that customer is using it, and they probably have very good reason to be using it.
As developers I don’t think we should be taking sides, brand loyalty and being a fan boy is for the end customer, our beliefs as a customer and as a developer should be kept separate and as we develop our software we should be more bothered about how many people we can spread our idea to than what we think about the platform we are developing on. I know it can be hard when the tools are useless and the platform feels clunky but the point is someone out there loves it and uses it everyday and they want to be part of your idea and maybe as developers we’re being a little selfish if we don’t let them in.
iPad 2 the A5 Processor and Apple TV
Unless you were on a desert island somewhere you will be aware of the announcement of the iPad 2. I love what they have done to upgrade it and while I wasn’t impressed enough to buy one of the original iPads I think Apple may have just about done enough with this one to make me at least seriously consider getting one.
What interested me most about the release though was the new A5 processor and its capabilities. I’ve posted before about the Apple TV potentially being used as a platform for IPTV, well with the arrival of the A5 processor I think there is a perfect opportunity to create a games console. With the new processor having twice as many cores and nine times more graphics processing power with the ability to output 1080p video it kind of makes sense that Apple could enable the next generation of Apple TV with an A5 processor to play games. In fact they probably wouldn’t even need to wait to release a new Apple TV to do it and there are already rumours going around that there are references to games in the Apple TV beta firmwares.
Personally I think this would be a brilliant idea and one I’ve already had a little taste of. I have a game on my iPhone called chopper 2 which allows you to connect your iPhone to your TV and display the game on the TV while playing it with another iPhone as a remote control. It works brilliantly and the graphics output is of a very high quality. I could easily imagine myself playing several games I own in this way and I think they would all work very well on the bigger screen.
It will be interesting to see if this does occur and if so how well it does. You never know if my adventures in iOS game development continue to go well then I might have a game out there on an Apple TV one day.
Helpful software errors
As software engineers do we think about software errors enough?
When I say software errors I’m not talking bugs or crashes, I’m talking about the everyday errors that occur because a user has done something wrong or their system is incorrectly configured. Often you’ll find that when writing software you automatically write the code in such a way to best accomodate things when they are going right and sometimes not as much care and consideration is taken when handling the errors that could occur.
My example of this will be MS SQL Server Management Studio. I’ve been developing software for many years and apart from a few courses at university I’ve pretty much managed to avoid any database work. Well a few months ago a project I was working on required me to start playing about with SQL server and this is really the inspiration for this article.
I can’t entirely remember what it was that I was trying to setup but I remember it being done mostly in SQL Server Management Studio and nearly every time there was an error or an issue I was presented with essentially what is a .NET stack trace. Now some of these stack traces were useful as the exceptions that had caused them had useful descriptive information included in them, but others were completely useless in assisting me with working out what had gone wrong. Usually it involved a few minutes googling the issue and I would be able to find the answer which was usually located in the MS Technet documentation. The thing is if they know what the cause is and they know how to solve it then why not include it in the application?
I realise that in large tools like SQL Server Management Studio that lots of different error states could occur and including all that documentation as part of a standard install would make it massive. At the same time sometimes you are provided with a link to take you to more information, I find that 9 times out of 10 that link takes you to a page that claims there is no more information on the error you are having yet searching the site manually usually presents the answer you are looking for.
With complexity comes errors so I believe the route to at least begin to alleviate the above problems would be to attempt to reduce complexity in products or at least shield it from the user. Secondly trying to better document common issues that could occur so that they can be solved more easily, and thirdly include systems within the application that can detect error states and explain the potential problems to the user before they become real issues.
While software now is 100 times more user-friendly than what it was 10 years ago, it still has a way to go and maybe that would be helped if as software engineers we started to spend a bit more time thinking about what happens when things go wrong in our applications.
Jack of all trades or master of one?
In software development is it better to be a Jack of all trades or a master of one?
For years I’ve always thought that having a broad set of software development skills is better than being specialised in one particular language or technology, however now I’m starting to question that.
I started doing what I would call proper software development when I started my university course (all those many years ago), up until that point I’d played around with various bits and bobs but never really made anything worth while. Back then everything was new and exciting and learning as much as possible about as many technologies as possible was the thing to do. Over a couple of years I covered many different languages and various associated libraries and ended up coming out of university with a love of C/C++.
Since I’ve been working I’ve encountered many other languages and libraries and I’ve noticed that I spend more and more time learning the latest and greatest of these libraries and languages to keep up with technology. I’ve also noticed more and more specialists appearing and a greater tendency for people to pick a technology and stick with it come hell or high water.
This is why I’m starting to question if it is better to know a little of everything that’s out there or if it’s better to concentrate on one particular area. For example what do employers prefer to see? I interview people every so often as part of my job and I must say that my preference used to be towards people who had a reasonable base understanding in a single language who have then dabbled in several others, however as the company I work for grows my attitude has changed and I now feel that I would prefer people who are more focused in particular areas as it’s only when you start getting in-depth into a technology that you learn its quirks, the kind of things that have a lesser experienced developer debugging problems for hours when in reality there isn’t actually a problem but it’s just a quirk of the framework or because it’s being used in a way that wasn’t intended and it doesn’t want to play ball.
I suppose what I’m saying in many ways is that with languages and libraries expanding at an exponential rate it’s starting to get more and more difficult to know a bit of everything to the level where it can be useful in a real world production environment, where as someone who has dedicated all their time to a specific technology is much more likely to be useful in those difficult situations that can occur and would be more likely to be aware of the issues in the first place and make sure they don’t occur.
While I’m starting to see more advantages to specialising in a single technology I can also see a lot of risks involved. It’s all well and good being an expert in a technology but if no one is employing in that field it’s not going to be overly useful, also there is the issue of flooding the market with expert developers in a single language making employment difficult to find if you chose that technology. You could also potentially lose flexibility by ignoring other technologies or take projects down long and painful routes that could have been solved in a better way had a more appropriate technology been used.
I suppose what might be best is to have maybe two/three technologies as your expertise and then a good overview of what else is available. Maybe it should be Jack of all trades master of some. Reminds me of something a university lecturer once told me. “The difference between a developer and an engineer is that a developer forces it to work and an engineer picks a technology that allows it to work elegantly”.
Stackoverflow the RPG of internet forums
I’m sure by now everyone has heard of and probably has used Stackoverflow, for those that haven’t it’s a forum style site where people ask software development related questions and more usually than not get actual useful answers. The main key to this is the community driven system that basically means that bad answers (and questions) get put to the bottom of the pile while the goodness floats to the top.
While having a browse around the site a few days ago it got me thinking about how their reputation system works and how in many ways the entire site feels like a big RPG where the point of the game is to help people out.
For an explanation of the reputation system and the awards you can get go the the FAQ section of the site and it lists everything in detail. Basically you can gain reputation points for asking good quality questions or giving good quality answers so this is essentially the same as gaining experience points in an RPG. Once you have a certain level of reputation you are allowed to do additional things on the site and new options are opened up to you, much like leveling up in an RPG. There are even additional achievements for performing certain tasks. Just to finish it off you can also trade some of your reputation points to encourage people to answer your questions.
The above is probably something everyone has already observed and I’m just being a bit late to the game, but I love the way that by intentionally or unintentionally making the site like a game they seem to have brought the best out in people. In the little amount of time I’ve been properly using the site I have to say I hardly ever see any spam or flame wars or me too posts, pretty much all of the content is of a decent quality and I think to a degree it’s because of the RPG game nature of the site. People love to grow a character, gain experience and unlock new adventures and features and more often than not they are very protective over that character and generally won’t do anything to endanger it, seems much the same on stackoverflow, people love to gain reputation points to the degree where sometimes it can be a race to see who can provide a high quality answer to a question first. It would be interesting to know if there were any statistics out there about how quickly questions get answered and those answers get accepted.
Mac App Store, a new beginning?
I love to speculate about why companies do certain things and what that could mean for the future of their products and services.
When I heard about the Mac App Store it got me thinking about what direction it could ultimately go in over time. I see the Mac App Store as the beginnings of a transitional phase for software on Apples laptops and desktops, it will move them towards being more like a true consumer device like the various iOS based devices. I could see in the future Apple making it a requirement that all software be delivered via the App Store. In doing so this would allow them to better lock down OSX as far as security etc was concerned. By requiring every piece of software that runs on their system to be approved and then locking down the OS as much as possible it gives them the ability to provide a platform where the consumer doesn’t have to worry about malware or viruses. At the moment this isn’t a massive issue for Apple as it is, but as they keep gaining more and more market share they could become more of a target for hackers and virus writers. By starting to implement the systems now it gives them the ability to stop the problem before it starts.
The Mac App Store could ultimately give Apple a lot of flexibility to change OSX as and when they liked without breaking things for users and developers thus the requirement by Apple for apps to only use certain APIs and OS features. This could mean that the Mac App Store is actually the enabler of the holy grail for OS designers; not having to support backwards compatibility.
I think the Mac App Store will be interesting but I also think the knock on effects of it will probably be more interesting.
Re: FluidDB
This is a reply to a post a friend made about a new technology he is playing with called FluidDB.
In his article he questions the privacy and data control issues with using such a technology as FluidDB, I found these issues interesting and so have decided to outline how I think they could be addressed. My thoughts do not deal with privacy and data access separately they kind of provide an overall approach that could potentially solve both issues.
From what I have read from both Guys article and some of the documentation on FluidDBs website, the premiss of their technology is that data is described as objects which are public to anyone else using the service, each user can then add tags to this object to extend the information about it or specialise it for a particular purpose. Tags can have various permissions allowing them to be readonly or restricting who can see them etc. All of this data is hosted in the cloud and anyone can access it from anywhere using simple RESTful type access using HTTP (I believe).
Now before I begin I would like to define what I class as “the cloud”. There are lots of different definitions of the cloud out there depending on who you talk to and what they are using it for. Personally I see it as distributed processing and data storage capability that is highly scalable, the most important part though is that you have a single point of interaction with the system and at no time do you know (or care for that matter) where the processing or data storage is. The whole point of the cloud as I see it is you have an application and you want to use that to interact with data of some kind of give a result, where that data is stored and where the processing takes place and more importantly how it is distributed is of no concern to the user, those are details that are taken care of by the cloud, all the user should be bothered about is that data goes in something happens somewhere and an answer comes out.
Using the above definition of “the cloud” I can then continue to define how I think the privacy and data control issues could be resolved.
Instead of having a single datastore, many service providers could provide data stores for you to place your personal FluidDB objects. It could be possible for you to even host your own FluidDB objects so that no company or other individual had access to it. Any FluidDB tags would then be held by the company/individual who was tagging your object and there would be tracker links between the two somewhat in the way bit-torrent works for finding peers. This would allow people to move their data around in anyway they wanted but still keep connections to tags etc. You could imagine that one day everyone would host their personal objects on a mobile permanently connect device such as a smartphone. Your personal object would contain any of the data you did not mind being made public and then various services could add tags to that object that could be marked as private and managed by the individual service you had signed up to. Obviously some of these services could provide public tags that other services could access.
In many ways it would work in a similar fashion to how google wave proposed the distribution of waves between enterprise customers to keep them private and secure while at the same time allowing access to certain outsiders.
This all means that data would be stored in “the cloud” (as defined above) and that anyone would be able to access it from anywhere but at the same time you would have more control over the privacy of your own data and no one entity would have direct control over all of the data.
This has been a very brief overview of a potential way to solve an issue that might not even exist, but sometimes it is fun to have ideas just to spark off some conversation.
Apple TV and YouView
Well I just posted about Project Canvas being branded as YouView and it got me thinking. If Apple started supporting apps on the new Apple TV would it be possible to have a YouView app?
With the Apple TV there will already be a large selection of streamable movies and past TV shows all of which will be chargeable content. At current with YouView it appears that all the catchup services will be free of charge as they are now but there will also be premium content available which I presume will be charged for. With all these online services at the moment there is a reasonable amount of cross over on content but at the same time no one service seems to offer a single location that has a completely comprehensive catalogue of media, no matter who you use they always seem to have some film or song you want missing.
Because of the above reason I can’t see that having a YouView app on the Apple TV would be stepping on too many people’s toes. There are various other IPTV platforms appearing around the world, it would be interesting to see if the Apple TV could essentially become a universal IPTV receiver which basically allowed access to all the platforms based on apps.
I think I will be keeping a close eye on this one as it could have some interesting results if the Apple TV ever supports apps and if IPTV platforms like YouView would be compatible with the Apple TV hardware.
There is of course the potential for an iPhone/iPod/iPad app that would support YouView but also support the new AirPlay feature so the media could just be streamed to the Apple TV without the need for an app on the Apple TV itself.
Whatever way it happens (or could happen) it is still pretty exciting stuff.



leave a comment