Live Fast, Code Hard, Die Young

Archive for the ‘News’ Category

I am game developer!

Wow, time flies! Time for a little update here…So many months have passed since my last post that it is almost embarrassing!

So what have I been up to then? Well, as I sit here sipping on my drink and enjoying my vacation I think I have finally landed a bit after a quite intense but truly amazing year. You see, last summer I got an offer to take on a new job as a game developer working with the iOS platform. Making games has been a dream since I was a kid and hacked away on demos all night long so I didn’t have to think long before I accepted this challenge.

Challenge? Why call it a challenge? Game development is just playing around all day and having fun isn’t it? No way José, I can tell you it’s not. Game development is one of the most difficult programming tasks you can take on. It requires skills in so many areas, especially if you are a small team, such as mathematics, physics, graphics, optimization etc. It is truly challenging, and that is why I enjoy it so much. My background in demo programming is worth gold here as I have experienced a lot of the same problems in that area (even though things have progressed a lot since back then).

VS.-Racing-2My full time job this past year has been working on a little racing game called Vs. Racing 2. Since this game is for iOS I had to switch to Mac and learn Objective C and OpenGL. In addition I also learned a lot of Python since we use that for some tools and also on our servers running on Google AppEngine.

As you can imagine, for me this was a leap into the technological unknown after having worked with Windows and .NET for more or less twelve years straight. But it has been very rewarding and fun to learn all this new stuff and I don’t regret it one bit!

In my future post I will try to share the things I have learned such as the differences between C# and Objective C so stay tuned…

Advertisement

Introducing Gitly – Git for Windows

Yesterday Github released their long awaited git client for Windows and of course – it is quite awesome. But that is not why I am writing this blog post.

I felt that the time has come for me to reveal a little more about the side project I have been working on for the past ten months. You have probably guessed it by now… Yes, I have been working on a Git client for Windows and it is called Gitly.

Now, why the heck do I want to write my own Git client? Especially now when Github is finally sprinkling their fairy dust on the Windows platform? Well, the plans for writing my own client started over a year ago and my primary motivation was that I believed I could do something better than the mixture of tools that was available back then. So in August 2011 I started hacking away on what I believed would be a project I could complete in a few months. Hmm, didn’t turn out that way. Instead it was a pretty rocky road I had to overcome before I finally had the basic things working. However, I learned a great deal about Git on the way and I still think I can make something that people will find useful.

First release

Today I have released the first version of Gitly to a number of private testers. The application is far from finished and I can’t promise when it will be ready, but I’m quite happy I’ve reached a point where it is actually usable. I’m pretty convinced I will keep working on it as a hobby for the better part of this summer and release new versions frequently.

So I guess you all want to see a screenshot. Remember this is an early version and things are likely to change a lot in the future. Nevertheless here it is:

Gitly - Git for Windows

The main purpose of Gitly is to provide an easy way to introduce Git in your organization where people may be used to traditional version control systems and don’t want to learn to use Git command line stuff. That means you need a user friendly and easily accessible UI, integration with Visual Studio and simple intuitive workflows. All provided in a single easy installation. That is what I aim to provide with Gitly.

I feel strongly about Git and I want to give developers a good alternative to TFS and SVN. I’m hoping that Gitly will provide that. What do you think?

 

Deployer – first public release

I’m happy to announce the first public release of Deployer – a deployment tool that we have been using in house for the past six years (and still continue to use today) to successfully handle updates for several large web sites and applications. It is written in C# using traditional WinForms and .NET 2.0 so it should run on most Windows systems (including Windows XP).

We are releasing this tool for free (and as open source) and hope you will find it useful too. Even though the tool was primarily developed to fit our needs it is pretty flexible and can be used in various situations. For instance, it does not have to be used to deploy a .NET project but can be used on any set of files where you need a little bit of control over what to copy and what not.

Now go ahead and download the tool or check out the source if you are more into that.

First look

So, still curious for more information? Well, let’s take a quick look at the main GUI of the application:

deployer

Deployer is similar to the Windows Explorer and shows the folder structure to the left starting from the root folder of your deployment project. The files in the selected folder are shown in the panel to the right. Files in red have been changed since the last deployment and need to be deployed again. This can be done by selecting them, right clicking and selecting “Add file(s) to queue” and then pushing the Deploy button.

A faster way to deploy files is to simply click the button in the toolbar that states “Queue files modified since last deployment” and then press the “Deploy queue” button next to it. This gives you a pretty quick workflow without having to remember what you have changed. Of course, you need to deploy at least once before you can do this.

Features

So what are the key features of the Deployer then? I would say the flexible deployment rules and the plugin system.

The Deployer determines the deployment method to use based on filters. This means that you can deploy different files using different methods and to different targets using configurable rules. Some files can be sent to one FTP site while others a sent to a completely different server. You can also rename files and folders so that it fits the destination structure.

Out of the box the Deployer has support for deploying files via FTP or to a network file share. However, it is extensible via plugins so you can add your own transfer protocols quite easily if you want. For example, at work we have developed plugins to deploy custom objects via a web service directly into a CMS system.

There is also plugin support for “hooks” which can be used to hook into the deployment procedure to provide special services. We are currently using this to stop and restart a Windows service on a remote server when you need to deploy a new version of it.

Multiple configurations are supported so you can have one for deploying to a test server, one for staging and another for live.

Unfortunately right now some features such as multiple configurations and deployment hooks can not be enabled from the GUI but require some manual tweaking of the project file. Usually this is pretty easy to accomplish since it’s just plain XML and quite easy to understand. Hopefully I’ll be able to implement support for configuring all of this from the GUI in the future.

History

Back in 2004 when I started developing Deployer we needed a tool for uploading files via FTP. Using a traditional FTP client was painful, since you had to go through each folder of a site and pick out the files to upload. We also had to deploy some custom objects to a CMS system by hand which was quite cumbersome… Clearly we needed something better. So, I developed a first version of the tool that used file filters to determine which files to deploy and where to deploy them and the ball started spinning. Soon we needed more features and I continued to work on the code and added things such as comparing database changes, deploying to multiple targets, specifying filter rules in subfolders, having several configurations and so on. This little tool grew into something that we found quite useful at our company. I’m hoping that by releasing it to the community it may help you too.

Download & source

You can download the setup from Github: https://github.com/downloads/pontusm/Deployer/DeployerSetup.exe

If you want to peek at the code and maybe even contribute you can find it here: https://github.com/pontusm/Deployer

Audius – the beginning

I have a grand vision.

In my vision I have a single unified interface to my entire music collection of favorite songs and artists. This may be music that I have access to on my local disk, on Last.fm, Spotify or whatever. I can play whatever I want whenever I want and I don’t have to keep track of where the songs are located.

You see, the important thing is not where the music file is physically located but the information you have gathered around it. Information that is personal to you, like your ratings and tags, and rich meta data that can be retrieved from the internet.

I want to manage my favorite artists, songs and albums in one place. I want to keep statistics of my listening habits in one place. I want my player to play the music I like, regardless of whether it’s available online or locally. I want to be social and share music. I want recommendations, surprise selections, intelligent mixing, rich information and smart guiding…

All in all, I want my music library in ONE place – is that too much to ask?

Audius is born

Ok, that’s a lot of desire in one paragraph…So, what do you do when thoughts like this keep spinning around and around in your heard?

Well, I just had to do something about it. I wanted an application that could manage all my music for me but I couldn’t find it. Every music player I have tried lacked one or more of the features that I felt were essential.

In my opinion the player has to satisfy these requirements:

  • It must provide a unified personal music library that is ignorant of where the music is stored
  • It must be fast and resource efficient
  • It must support online music services
  • It must show rich information about the music
  • It must be able to handle ratings and track the songs I play
  • It would also be nice if it could generate playlists intelligently (similar to Last.fm) but based on everything I have access to and the artists I like

When I couldn’t find something that matched all my requirements I had only one thing to do – I had to write my own player.

That is when Audius was born.

But why?

Yes, I know what you are thinking. There are plenty of music players out there…Why not just be satisfied with what we have?

Well, most popular music players were built ages ago. They don’t provide access to any of the music services available online today, or they struggle with a bogged down interface that is filled to the brim with unnecessary junk.

I listen to Spotify alot. It’s a great service but often I can’t find the music I want to hear. They simply don’t have it. It’s also very uninspiring when it comes to finding new music.

Last.fm is great for finding new unsigned artists and music that is a little bit out of the mainstream. I really like it, but their player application is quite boring and limited.

On my Iphone I have music from my own library. It’s great, I like it. But I have to sync it with Itunes. Since this also updates play count in Itunes I have started using Itunes to play music on my desktop too. I hate it. Itunes is probably the worst music player I have ever used. (I probably need another article to describe all its flaws.)

Winamp has been a long time favorite player for me, but in the recent years it has turned into a hopeless piece of bloatware suffering from an incoherent GUI.

For some time I used Windows Media Player. It’s quite nice, but it does funny things with your library and it does a lousy job with retrieving meta data. And of course, it cannot play music from any of the online services that I like.

The worst thing of all is that since I’m using three different players on my desktop (because they are all good at different things) I end up having to manage tags and album covers in all of them because they fail to cooperate. That really makes me sick of it all. The player should be able to work these things out without my help! Please.

Finally

So there you have it. Audius was born out of frustration with the currently offered products for playing music. When I’m writing this I am not ready to release anything public yet. I have a working alpha version that a few friends are trying out. It works, but it is far from polished. Hopefully I will be able to push something out in the upcoming months, but we’ll see.

This is my vision. It will not be easy to accomplish it, but I’m willing to give it a try. For my own sanity. I need it. Now.

Welcome!

I finally decided to move my blog to a new home! It was about time to move to another blog platform and WordPress seems to be a popular choice these days. In fact, it’s a quite comfortable solution for creating a minimal personal site which I’m intending to do.

I will import some of my most useful posts from http://pontusm.spaces.live.com/ so they can be found here too. I’m hoping to write more frequently here about new technology and things that interest me at the moment.

Over and out!

Twitter

I’ve started using Twitter as my micro blog. I’ve come to realize that I seldom have enough time to write longer blog posts so I think micro blogging will suit me better. However, when I feel like writing longer articles I’ll post them here for sure.