ImaginationOverflow

The knowings and experiences of a group of developers.

Category Archives: Thoughts and Frustrations

MonoGame for 2D

After a long break of developing on personal projects, due to laziness and a busy schedule (mostly laziness), I decided to take on a new project, I will recreate a game from my childhood! I don’t know the name of the game, I played it at coffee shops (on touch enabled arcades), but I do know how it is supposed to be played:

  • There is a single-player and a multi-player mode;
  • One wall of blocks will come from each player side and advance until it reaches the end, or the wall of the other player, at which point you lose;
  • You can remove blocks, by touching them, if they are adjacent to two or more blocks of the same color/type;
  • The game has no ending, the goal is to score as much points as you can.

With this basic premise for the game in mind I started developing the game. It wasn’t to long until I ran into the first bump in the road, but that was to be expected, the only games I managed to finish was a cheap version of the “The Hangman” and “Pacman” (in 3D!). So with no experience in developing games I started working on a little engine for my game, on top of MonoGame.

Read more of this post

Logo, domain and new app

Its been a while since the ImagineCup post, but (and again) we hope that the blog posts start to rise again xD.

Since April nothing important real happen, PaletaS now has a degree, Sorcha switch from ISEL to IST, I quit my job to start doing research and develop apps.

Enter Metro Scrobbler.

Remember Wp7 Last.fm scrobbler? My first app? I’ve redone it with all the knowledge that I acquired while making InSkin. The result?

Our real first Metro App (or Modern or Windows App Design , whatever Microsoft calls it now, to us it always be Metro Style).

Download it now

Free Version
Paid Version

Don’t forget to follow @MetroScrobbler and like our page on Facebook

After 1 year of public existence we decided to buy the imaginationoverflow.com domain to our (to come) official website.

We are currently porting Metro Scrobbler to Windows 8 and Windows Phone 8 and developing two games xDD.

Meanwhile stay tuned app design posts are coming.

The ImagineCup national finals experience

Me and the team were participating on this years ImagineCup contest with a cool app named InSkin.
Feeding the app with a mole photo it will tell you if the mole can be skin cancer or not. But I’m not here to talk about the app (yet) we will have more news about it soon, namely when it will be available to the public.

The team were me, Sorcha, Diogo Silva and Joana Leite, this last two maybe seem new to you but we’ve been working together for some time now.

The Portuguese national finals were at the new microsoft Portugal building, the Lisbon experience, we’ve been training for a few weeks and really thought that we could make it.

The day started early by arriving at the ms building at exactly 8.30 and of course we dressed to the occasion:

Read more of this post

Where the hell is XML successor?

Today me and some colleges were discussing random stuff as usual, somewhere in the middle someone said something about XML, I  yawn (as always) and a discussion started about my XML hate relationship.

When I learnt XML (2 or 3 years ago) I loved it, it was easy to understand, very declarative and readable. But back in those days I knew nothing about the computer world, I only knew java and C, I didn’t knew what the hell was design patterns, code conventions, pretty code, etc.

When I learnt JSON I didn’t really understand its purpose so it was one more way to send data from one place to another.

Today I’ve a different view on how code and information should look like: namely, simple, concise, easy to read and the most important should be easy to write (low on chars). This last characteristic is probably the most important since its less memory used to save the data or less bandwidth used to exchange data, etc.

At first JSON seems perfect, it’s much more readable than XML and more compact. Then there is the underground MGraph by Microsoft with a really appealing syntax and is more compact than JSON, the problem is its inventor, Microsoft. The hardcore open-source community would never accept using something made by Microsoft so an overall usage would be automatically denied. Finally there is the YAML, my shame in all of this, since until today I never tried to found out what it was.

Let’s see it first, YAML version:

Course:
  Name: Web Programming
  Teacher: ATeacher
  Year: 2011
  Grades:
  - Student: Student A
    Value: 17
  - Student: Student B
    Value: 18

The XML version;

<Course Name="Web Programming" Year="2011">
  <Teacher> ATeacher </Teacher>
  <Grades>
     <Grade Value = "17"> Student A</Grade>
     <Grade Value = "18"> Student B</Grade>
  </Grades>
</Course>

Is it really necessary more comments? No, I fell in love with this new way to show data. Maybe I’m going to make a blog series on this, seems a really nice thing.

YAML have all the characteristics that I enumerated before, people will say that XML will always be here, because things like HTML, config files and schema support. The question is, isn’t XML a bit outdated? Its syntax didn’t get better or evolve with the technology, it’s pretty much the same thing that SGML (invented in the 60s), are we too accommodated with XML? Since when did the computer world stop searching for the best next thing? Think on it.

Resources:

YAML official site
MGraph the next xml

New Home

So between February and September we didn’t post a single blog, but we didn’t stop working XD.
Between then and here, we lost the imagine cup competition without even going to the finals, but you can check the repo in the codeplex site:
Give Graph Repo.

DVD developed his own embedded operating system, used some cool stuff that he learnt browsing eCos kernel, and mono Slimthreading implementation, he is going to talk about it in the future.

The team has done a nice work, in java ( insert WTF in here XD), we made a simple copy of .NET MVC framework and the .NET Entity Framework Code first library to a course final work, that will be soon on github. Don’t know if we’re going to write about it or not.

Currently the three of us are applying to Codebits 2011, that is an annual 2 day nonstop coding event, with a lot of nerdish, presentations and competitions. DVD might actually (hopefully) be going to give a talk about C# 5.0 async framework.

During this time we went trough lots of frustrations which eventually led to new knowledge, so it’s always cool, actually it might be the best way to learn.

PaletaS also developed, during a course work, a simple web chat using WebSockets which can be used to show how WebSockets will make the life of web developers much easier and web apps much more simple to make, this code will also be in the repository soon.

Finally, Sorcha is working on doing a port of the .NET Micro Framework. Don’t know what it is? Imagine 60MHz CPU with 4Mb of ram and flash, something like that is really small, now imagine that small processor running the CLR, and you making applications that will run on it using C#, with some limitations.

Self-Commented Code

“Self-Commented” code, that has to be the best expression I have ever heard regarding programmation.

I have to admit I’m not the best fan of comments, I kinda feel that when programming in java the javadoc infrastructure is useful and I try to do the best I can for my code but I don’t like to explain what a method does. Well today during class I smiled as I heard that expression and I love it now, to make code that one simply by reading knows exactly what it does, without further explanation, is just awesome.

Read more of this post

Anti Copy-Paste Movement

This post is directed at new programmers, something that I felt like sharing as I still see friends and colleagues doing this mistake, it hurts to watch.

I’ve started coding long ago, using my old friend HTML, and I used to get pretty excited by having many lines of code, huge and complex algorithms, that no one could understand, and by the speed of what I done all that. Back then copy-paste was my biggest, and only, friend as it would speed up my work alot, or so I thought, I had no idea what intellisense was back then, not sure it even existed.

But this as all changed, the last 2 years were a infinite loop of learning how copy-paste is my worst enemy. Maybe you’re also like I was and find copy-paste, maybe along with intellisense, a good tool to speed up your programming speed but let me explain how that is just wrong.

Every time I have to copy-paste I stop, take a deep breath, and I try to figure out why I should use the copy-paste. Most of the time, maybe all of it, is the need of using that pretty piece of code that you just made and is needed elsewhere, and for that there is an easy solution, if it’s more than 3 lines long, in my opinion it is worth of it’s own function. Yes, don’t be afraid of promoting that little code to a function. If it happens to have a bug and you copied it to 3 different places you will have to go to them all and correct it, and you may forgot that you copied to a 4th place. If it’s a function it is so easy to fix it, just correct that function and it all works well.

People used to tell me this before, like I’m telling you now, and I always thought they just were being dramatic, but now that I make bigger and more complex applications I often deal with bugs on functions that if were not made a function I would spend more time copying the correct code everywhere than to actually fix the bug.

No copy-paste, along with many tests, saves you from big headaches when trying to deploy your application.

%d bloggers like this: