You are here

software

AFI's 100 Years… 100 Movies

In 1998, the American Film Institute (AFI) unveiled a list of the 100 best American movies, as determined by a poll of artists and leaders in the film industry from a list of 400 nominated movies. It became a must-watch list for a generation of film buffs who had enjoyed the films when they were released, and a generation of budding film buffs who discovered these masterpieces for the first time.

This app encourages you to browse both lists, enjoy the original movie posters, make your own watch list, rate each of the titles, and learn about the directors, actors and writers of these films.

Candy Crush Saga Cheats

I gave in and I tried this Candy Crush game that everyone was talking about. I'm hooked.

Let me be clear. Five lives per day is a perfectly healthy number. It gives you some time for leisure, and then you are forced to assimilate back into society as a contributing member.

That said, I get just as much fun from taking toys apart as from playing with them, so I started tearing it apart to see what I could do about these limited lives.

These are notes, not instructions. A developer should have no problems here, but if you need step-by-step instructions you'll need to look elsewhere. Better yet, just buy some more lives/items.

The Save File

Your belongings in the gave are saved in a save file, called save_XXXXX.dat, where XXXXX is some sort of timestamp. This file is present in the app's sandbox once you have played the game. It is a binary file. If they used a serializer, I'm not sure which one.

For an iOS device you can read and write to the filesystem using DiskAid.

The process for reverse-engineering save files is no mystery. Copy the save file. Make a change. Copy the save file. Compare.

I used VBinDiff for the binary diffs and Fhred as my hex editor.

Here are my findings so far. Values are big-endian.

Item Byte Offset Bits Tested Bits Predicted
Disco ball 0x0050 32 32
Coconut ring 0x0068 16 32
Jelly Fish 0x005c 8 32
Wrapped & Striped 0x00a4 16 32
Lives 0x0290 16 32
Lollipop hammer  0x0074  8 32
Lucky Candy 0x0098  32
       
       

5 Alternatives to Google Analytics

Tags: 

Cross-platform user interface development for iOS, Android, and Windows Store

I am currently developing a C# / .NET user interface platform that will finally allow you to write the UI once in C# and create:

  • iOS applications using Xamarin.iOS
  • Android applications using Xamarin for Android
  • Windows Store (WinRT) applications

I will consider adding Windows Phone and Silverlight, which should be easy ports.

The platform will include an attractive and flexible calendar control.

The project will represent about 500 hours of development. The components will be released under commercial license. The target price is $200-300. I hope to release many building blocks of the platform under an open-source permissive license.

The calendar component is currently in alpha release.

If you would like more information, or would like updates as they become available, please contact me.

Unity: ArgumentException: The Assembly UnityEditor is referenced by TouchScript.Editor. But the dll is not allowed to be included or could not be found.

You may get this error in Unity when building. Often it is due to a missing DLL, or linking directly to the Unity runtime.

In my case it turned out to be simple. I have the same DLL (TouchScript.Editor.dll)  in two places in my project.

Grouper app reviewed on ILoveFreeSoftware.com

My Grouper app was recently reviewed on ILoveFreeSoftware.com.

Windows 8 actually allows you to create a group of tiles similar apps, for example a group of all social apps, group of chatting apps, group of movies and music apps etc. You don’t need to download anything extra for grouping apps together. However Windows 8 doesn’t provide any mechanism to name these groups of apps. So, you need to install this simple light weight utility app Grouper from the Productivity Category in Windows Store. You can use the Windows 8 Search Charm to locate the app in Windows Store or click on the download link given at the end of this article. Then follow the steps of this Windows 8 tutorial.

Read the full article.

How to convert DMG to ISO on OSX

hdiutil convert <dmg_filename> -format UDTO -o <iso_filename>

Pushing software to its limits

When one uses software "normally", that is, how 90% of users use it, it usually works the way it was designed.

When you start to use new or seldom-used features, you quickly discover bugs that are either unreported or are a low-priority for the developers to fix.

I've recently completed an educational game for a client that pushed these boundaries.

The client has had frustrating experiences in the past with mandatory frameworks. Their last software required AIR which turned out to be a huge support headache, and the alternative such as Silverlight, Shockwave Flash, or even .NET would make support no easier.

We decided to use HTML5 instead.

More to come

WebIssues: An issue tracker worthy of support

WebIssues screen shot

I think any project that could have multiple issues requiring resolution, especially on an ongoing basis deserve an issue tracker, also known as a ticket system.

In the past I have used Eventum, RT, and Bugzilla, Mantis, and the Google Code IssueTracker. My favourite of these is Eventum, but when considering a new tracker I did some looking around.

I have found that most trackers can be divided into:

  • general-purpose trackers (like the ones mentioned above)
  • do everything including tracking trackers (Horde)
  • trackers designed for software development, usually supporting an agile workflow.

While browsing SourceForge I stumbled upon WebIssues. It is a general-purpose tracker but it has some nice features that make it unique.

  • In addition to a web-based client, it has a full-featured cross-platform desktop client with native support for Windows, Linux, and OS X.
  • It supports three different database back-ends, MySQL, PostgreSQL or SQL Server.
  • It has an attractive user-interface yet is fast and solid.
  • It supports different types of tickets, such as bugs and tasks. Each type has customizable attributes and new types and attributes can be added. It even comes pre-loaded with a type called forum that can be used as a simple message board.
  • Reports can be exported to CSV, HTML and even PDF format.
  • It is well documented, including:
    • a comprehensive user manual in English and Polish in online, downloadable HTML, and PDF formats.
    • developer documentation that introduces contributors to the concepts used in the software.

I tried the software and it installed on the server like a dream. It was simply a matter of creating an empty database and user on my MySQL server, unpacking the server component to a directory on my webserver, and running the simple web-based installer. Many applications try to install this seamlessly, but few achieve it without a snag or two.

I was thrilled to discover that not only is the client available as a portable application, but it is packaged in PortableApps (paf) format. It's no secret that I'm a huge fan of PortableApps.

Unfortunately one feature it doesn't have, one that I consider a necessity is an inbound e-mail gateway, so that users can create new tickets and update tickets simple by sending an e-mail to support@example.com

Of course the beauty of open-source software is that contributions are welcome. I have joined Michał Męciński and the WebIssues team to add an inbound e-mail gateway.

Michał's code is very clean, and I was able to add the new functionality in about 10 hours. It is currently being tested at my site, and I'll merge it with the rest of the project when it has been thoroughly tested. It will still require another 20-30 hours to smooth out the rough edges and document it.

WebIssues started in 2005 as Michał's master's thesis. He made it available publicly in 2006 and it won the Qt Centre Programming Contest in 2008. The current branch was released in December 2011 and the latest release, 1.0.4 was released just a couple of months ago.

If you are considering a ticket system, please take a serious look at WebIssues.

If you think a system like this would be useful in your business but you don't know where to start, please contact me.

Bulk labelling volumes in Bacula

My EC2 Bacula storage configuration consists of a single pool containing multiple storage devices. Each storage device is a 100GB EBS store, and each contains a fixed number of prelabelled 1GB volumes.

Here's a little script I whipped together to prelabel the volumes with an incremental identifier.

NAME
    bulklabel -- label new Bacula volumes with incremental names
 
VERSION
    1.0 February 5, 2013
 
SYNOPSIS
    bulklabel <pool> <storage> <start> <count> <prefix>
    bulklabel <pool> <storage> <start> <count>
 
    pool:    name of pool resource
    storage: name of storage resource
    start:   first numerical identifier
    count:   number of volumes to create
    prefix:  optional volume name prefix
 
EXAMPLES
    bulklabel Default FileStorage1 10000 100 Vol-
        will create 100 volumes named Vol-10000, Vol-10001...
    bulklabel Scratch Tape1 20000 50
        will create 50 volumes named 20000, 20001...
 
COPYRIGHT
    (c) 2013, Yvan Rodrigues http://yvanrodrigues.com
              Red Cell Innovation Inc. http://two-red-cells.com
 
LICENSE
    FreeBSD license
    http://en.wikipedia.org/wiki/FreeBSD_License

Pages

Simple Copyright Policy: If you want to reproduce anything on this site, get my permission first.