Sunday, 28 August 2011

Still designing levels...Blah blah...Taking a long time...Yadda yadda...lots still to do...etcetera.

In other news, the first game has done quite well this month with over 500 sales. I certainly didn't expect it to be shifting decent numbers 15 months from release, but it's very welcome. 500 is quite a lot of people when you think about it, isn't it?

In otherer news, I had a good idea for a new game in the bath today; a 2D shooter with a real sense of scale and more fruit. Once I've finished AJ2 I'll probably get cracking on it. Possible title: SPACE ORANGE.

Monday, 22 August 2011

nmrglue



NMR glue is based on the same libraries on which VeSPA is built. The installation of nmrglue is similar. Different is the result. After the installation is complete, there is no icon to click. The instructions say nothing about what to do after installation. While the purpose of the program is clearly described, I can't add anything of my own, because I can't use it. The program is somewhere on my computer, but I don't know how to launch it.

Who feels the need of another NMR program? I still haven't found the answer to the question: "Who felt the need of inventing Python?".

Sunday, 21 August 2011

OpenGL Line Drawing is Broken on Some Android Phones

Drawdle is a somewhat performance-intensive application, both because of its physics engine and its graphics (crude as they are). On older devices, such as the HTC hero, it is advisable to turn the background off for a smoother performance, as the objects floating around back there account for a significant amount of rendering time. In fact, Drawdle automatically disables the background on devices that have a resolution smaller than 800x480 on the basis that such devices are probably older or otherwise less powerful, and we want to ensure good performance "out of the box" on as many devices as possible.




Drawdle with the backgrounds on
That said, I had been getting reports of very poor performance from users with new, high-powered devices such as the HTC Thunderbolt, Desire HD and Incredible 2. And not poor as in 15-20 FPS (as with my Hero when backgrounds are on), but as bad as 1-2 FPS, not even remotely playable. These users made their displeasure very clear on the Drawdle Lite ratings/comments board on the Android Market.

Why was this happening? Drawdle plays great, background and all, on my friend's HTC Evo 4G, a device that is similar to the HTC Thunderbolt only a year older and by any measure not as powerful. The story was the same for the Droid Incredible line of phones: Drawdle plays fine on the original and plays horribly on the newer model. Something was very wrong.

The culprit, as I was able to verify, was the background. Users who turned the Drawdle background off on their Thunderbolts reported markedly improved performance, in line with devices that were known to be OK. Unfortunately, this was not enough to go on: the code responsible for the background in Drawdle wasn't that different from the rest of the codebase. Creating the background required the physics engine, line rendering and buffer updating, nothing that that wasn't being done all the time anyway.

I didn't have access to an affected device to profile on (an a la carte Thunderbolt costs $700 retail), so tracking this down would not be quick. I started by converting my vertex arrays to VBOs, confident that there was a bug in the glDrawArrays implementation on these devices. A quick trip to the Verizon Store to test my fix showed that my optimism was misplaced, as there was no improvement. This pattern repeated itself when I tried disabling the physics engine and updates to the color buffers for the background objects (look closely and you can see the objects periodically change their colors). Nothing that I tried helped.

My only hint was this post discussing a similar problem on a weather application: some users were reporting that the app ran fine on their devices until they turned on county lines. I had an epiphany that night while thinking about that post: it was line drawing that was slowing my app on these devices, sprite rendering, which was implemented the same way, using glDrawArrays, worked fine.

I set about converting my line drawing calls to their equivalent triangle strip calls. This wasn't trivial or cheap (a triangle strip requires twice as many vertices as an equivalent line, line strip or line loop), but it was worth the effort. On my next round of testing (thank you Verizon Store) my app performed flawlessly.

Long story short, you should avoid drawing calls with GL_LINES, GL_LINE_STRIP and GL_LINE_LOOP when developing for Android. This goes for both vertex arrays and VBOs. This problem appears to affect only some phones with Adreno 205 GPUs, but that isn't proven at this point. More research is needed; if you have anything to share, please drop me a line or leave a comment here.

Friday, 19 August 2011

One year of London Software Craftsmanship Community (LSCC)

Without a sense of caring, there can be no sense of community. - Anthony Burgess

Happy Birthday, LSCC!!!!

On 18th of August 2011, the London Software Craftsmanship Community completed one year. And what a great year we had!

How did it all start?

David Green and I had worked together in the past and we kept in touch since. Over one year ago, we were talking to each other about our jobs, pet projects, technologies, etc and we both realised that we couldn't discuss everything we wanted just with the people we knew. We were also aware of our own limitations. So we thought that it would be awesome if there was a group of people that we could meet regularly and share ideas about software development in general.

By then, I was very into the whole Software Craftsmanship thing. David was also very aware of everything that was going on, but we had slightly different views of craftsmanship as a movement. I remember having quite a few interesting conversations with him about that. However, we both always believed in the same principles and values regardless of the labels people were using.

I had been involved with the London Java Community (LJC) even before its existence. At some point I managed to bring David along to one of the LJC's social events. On that evening, David and I had a chat with Barry Cranford, founder of the LJC, and with Martijn Verburg and John Stevenson, LJC organisers and also involved with other user groups and open source communities. We mentioned to them our idea of having a regular meeting where any topic related to software development could be discussed. Maybe show and write some code, discuss design, compare approaches. Completely language agnostic. We also mentioned to them one thing or two about the Software Craftsmanship movement. They all said that we should go ahead and found our own community instead and offered us LJC's support and blessings. I don't think that any of us was really thinking about founding a community. We just wanted to attend this sort of meetings.

David was always a bit more organised than me. But me, I could barely organise a bbq for my own birthday, let alone run a community. We left the pub that night and while walking to the station we though that actually it could be a good idea. Maybe we should give it a go. Why not?

When I got home that night, I went to the meetup.com website and created the London Software Craftsmanship Community.

Summary of our first year

We had our first meeting on 6th of October, 2010 (video). David and I gave a introductory talk on software craftsmanship and for our surprise we had over 100 people subscribed. That was the first sign that our community would take off. Right after we decided to have a monthly meeting called Software Craftsmanship Round-table

The Round-table meetings

This is the meeting that we always wanted to have and that triggered the whole thing. In general they are limited to 25 people. We get together and attendees write the topics they want to discuss on the whiteboard. Any thing related to software development is valid. Then we take a vote. The most voted topics are discussed. Sometimes we discuss just one or two topics, sometimes we discuss up to five topics. No one needs to be an expert on the topic. It's not a presentation. It's just a friendly group discussion.

During the round-table meetings over the year, we had people showing code they were working on, pieces of design and architecture, testing frameworks, and had discussions about a huge amount of other topics. We had discussions about hiring good developers, distributed agile teams, mentors and apprentices, TDD, legacy code, patterns, PaaS comparisons, programming languages, android testing frameworks, the future of web applications, literate programming, DSLs, BDD frameworks, DDD, anti-patterns, specific technologies like Hamcrest, JUnit theories and Spring Roo and many many others that it would be impossible to describe all.

I absolutely love the roundtables and learned a lot from them. Our latest addition to it is a series of lightning talks at the beginning of the night, when people fancy giving one. Another cool thing is that every meeting is different, depending of who is attending, the topics proposed and the ones people voted on. 

Other meetings

During the year we also had a few other great meetings. One was the Software Craftsmanship Panel Discussion - How can craftsmanship move the industry forwards? | video - when we had the pleasure to have Ade Oshineye, Chris Parsons, Dan North and Dave Hoover in the panel. It was great to see them giving their views about many topics relevant to the future of our industry. We had Jason Huggins, creator of Selenium, giving a talk to us about "how to test 'untestable' applications" | video.

We also cross-promoted the Code Retreat Winchester, organised by Despo and Aimee, and the first Cambridge Dojo Day, organised by Alastair Smith, organiser of the Cambridge User Group - CAMDUG.

Future meetings

We will be keeping the monthly Software Craftsmanship Round-table meetings on every second week of the month. From this month onwards, we will have a monthly hands-on session on the last week of the month. Our first one is the Crafting Object-Oriented Code, on the 30th of August. We will be opening the space to our members to submit proposals for any hands-on session they want run in the following months.

We are also very happy to be having LSCC's First Code Retreat on 10th of September.

Our meetings tend to be fully subscribed, on average, in 24 hours after they are announced. We had round-table meetings being booked up in just 5 hours in the past. So, if you want to attend our meetings, make sure you register as soon as you get the email notification.

Community

Throughout the year, we met many extremely passionate and talented people. I learned things that I was not even aware they existed. And that's what this is all about. That's exactly what we always wanted. We met people from all levels of expertise, different backgrounds, working in different industries and with different technologies. All kind enough to share what they know and humble enough to want to learn from others.

LSCC had a lot of support from LJC and we are committed to support other communities as well. With that in mind, we would like to offer our support to any person or group of people thinking to found a software craftsmanship community in the UK or even abroad. We are more than happy to cross-promote any event to our members - if we judge they are relevant to our community and to the software craftsmanship moment as a whole.

The future of LSCC

We have quite a few things in our heads but I don't want to spoil the surprise and neither make promises I may not live up to. But there are a few things I can say. Besides all the regular meetings (round-tables and hands-on sessions), we want to focus more on the Software Craftsmanship movement itself. There are quite a few principles and values that we need to start focusing on. We are already having discussions about some of them so watch this space.

Another thing I personally would like to see is more software craftsmanship communities around the UK and Europe. We will do the best we can to help and support new communities.

As we grow, we will need to do more but one thing is for sure. We will not compromise the quality of our meetings or things we want to do just to bring more people in.

A big thanks

I would like to thank our sponsors - YouDevise, SkillsMatter and Valtech - for their support, for offering their premisses so we can run our events for free and for helping us get fat with all the pizzas and drinks.

A big thanks to all the kindred spirits that support and promote LSCC and, last but not least, a massive thanks to all LSCC members for their dedication to their craft and for making LSCC a great community. You guys rock!

I'm really proud to be a software craftsman and I'm happy to be able to give something back to this amazing community of developers that gave me so much and that helped me to become the professional I am today. Thank you all.

Thursday, 18 August 2011

Here is a frame from the Apple Jack's Great Escape intro, currently being worked on by a nice chap called Neil, who's a copywriter and who recently got married. Wave to Neil everyone!



Sunday, 14 August 2011

Drawdle Trailer Released

The official gameplay trailer for Drawdle has been released, check it out:


Friday, 12 August 2011

Hmm, not much to report except that designing the levels for this game is taking longer than for the first Apple Jack, for these two reasons:

1)  Most of them are larger.
2)  They are now full of moving objects and often the speed and position of these blocks/ platforms/ switches/ saws has to be worked out using trial and error; changing something in the level editor and then playing the level to see if it works.

On the upside, having gotten everything working, some of the levels are, if I say so myself, very clever and unique. Since level 20 I've started adding switches which 'turn off' blocks of scenery as long as something is pressing them down, be that a block, an enemy, or Jack himself. I'm almost spoilt for choice, which probably isn't helping in terms of a speedy release.




Thursday, 11 August 2011

Launched

We've launched.

One Side Software is a independent software company based out of Atlanta, Georgia. Our first title is Drawdle:

Drawdle is a drawing based physics game, where you draw the objects you use to solve puzzles. You've probably never seen anything like it before. Both a free and paid version are available now on the Android Market. Check it out.

As for this blog, I'm planning to post my experience with Drawdle and other games. Posts will cover design and development (which I know) and marketing and PR (which I don't). All of these, I hope, will be interesting in their own right. Stay tuned.