Twim v1.13 Released

June 28th, 2009

I’m just finished up the last bits of code for Twim v1.13. This new release introduces new media services like MobyPicture. You can now also upload video files from Twim either to yFrog or Moby services. Here’s my sample video recorded with Nokia E71 in Mobypicture and in yFrog.

You can download latest version from Twim page, here.

What would you like to see in the next version of Twim? Vote your favourite feature here:

Favorites, yfrog and file based photo upload

May 12th, 2009

I just finished up coding new features for Twim v1.12. New features in this release:

  • yfrog support
  • Favorites support
  • File based photo upload
  • Recent timeline not loaded on startup automatically (to reduce bandwidth usage)
yfrog

yfrog.com

With the latest release you can share your photos with yfrog service in addition to existing TwitPic and Twitgoo services. Now you can also send image files so your phone doesn’t have to support Media API. The file based photo upload displays a file browser so that you can select a file to be uploaded to a selected service.

Another big feature is the favorites support. You can now mark statuses as favorite. Favorite statuses are displayed in separate timeline. I’ve been using this feature to store statuses containing interesting links so that I can check them from desktop browser later on (http://twitter.com/favorites).

Twim is still free and you can download the latest binaries from here.

People have mentioned many good ideas for the future versions of Twim, like auto-refresh for recent timeline and incremental update to reduce the bandwidth usage.

New Twim with Twitgoo Support

April 26th, 2009

New release of Twim is once again out of the door.

Twitgoo Service

Now you can post photos from Twim to Twitgoo

With the latest version (v1.11) you will gain the following new features:

  • Twitgoo support. Now you can take a photo and send it directly to Twitgoo service.
  • Retweet feature fills up the status update box with the selected tweet.
  • Clock is shown in the bottom of the menu screen so you know what  time it is even if you Tweet with Twim 24/7.
Photo services

Photo services

Download the latest version from Twim page here. Tweet me (@tlaukkanen) if you like the new features :)

For the next versions I have planned on implementing an option to upload existing photos from your memory card as then you will have much more higher quality photos to upload to TwitPic and Twitgoo. This is because Java MMAPI doesn’t let application to take full resolution pics within Java application for unknown reasons.

Perfect Maze

April 19th, 2009

My older son likes to solve mazes that I draw to him. It’s takes a bit effort to create larger mazes at least if you want them to be “perfect” mazes. A perfect maze is defined as a maze which has one and only one path from any point in the maze to any other point. It was pretty easy to write a piece of code that creates mazes automatically using the Depth First Algorithm.

Perfect Maze

Perfect Maze

I wrote a small Java Applet that creates a different level of mazes with each mouse click. I haven’t written an applet for years so now it was time to try out the latest features of the Java Runtime. Sun have introduced many improvements in the latest runtime updates (Java 6 Update 10). Now applet is run in a different thread then the browser itself so you can’t hang the browser when starting an applet.

One of the cool features is that you can even drag the applet outside from your browser and close the browser while having the applet still running. That could able nice solutions to be written in applet format.

I created a new page for my latest Maze Applet so go a head and try it out. It doesn’t have much interactive features. You can just create new mazes by clicking the left mouse button. If you have the latest Java Runtime you can also test the dragging by holding the ALT key and then dragging the applet out from the browser window.

You asked for it, You got it (TwitPic)

April 4th, 2009

It seems that Twitter made some changes to their API since the Twim application just started to have some trouble when parsing the date stamps for the statuses. That turned out to be a simple bug that was causing it. The bug was fixed in a second but I couldn’t make a release before I had finished implementing the TwitPic support that I had already started coding. TwitPic support was highly requested from many users so hopefully this will make you happy :)

Photo uploaded to TwitPic via Twim

Photo uploaded to TwitPic via Twim

I just uploaded the latest release files of v1.9 to the Twim page. Go ahead and download the new version. Please leave a comment if you like (or don’t like) the new feature :)

Atlassian User Group Meeting in Helsinki

April 2nd, 2009

I just returned from my first Atlassian User Group meeting which was held in Helsinki. Rene Jansen from Atlassian said that this was the first user group meeting in Northern Europe and it was pretty popular as there were over sixty people attending.

Rene showed a few slides on what Atlassian have done during the last year and what they are going to release in the near future. There were very exiting news to JIRA and Confluence users as they are putting out new releases of both. New JIRA will have nice features like JQL (JIRA Query Language) and maybe some UI changes. Next Confluence version will include more “people” features and therefore improve the social aspect of the Wiki.

Kulosaaren Casino

Best part of the meeting were the round table / birds of feather discussions. We divided into smaller groups of around 8-10 people. Our group had great discussion around the “Agile Development, SCRUM” topic. There were many companies that are using SCRUM with JIRA and other dev tools. Everyone agreed that GrassHopper plugin highly recommended for daily duties like daily standup meetings (task board) and keeping the backlogs in order (planning board).

Stuff from Atlassian User Group Meeting

There were good tips how backlogs, epics, user stories and tasks can be entered to JIRA. One good solution is to use one (or several) project versions as a backlog. Then user stories and epics as normal issues. Epics could be broken down to smaller user stories by linking them together. When sprint is planned then dev team can take user stories and add detailed tasks to user stories as subtasks. Version concept can be used as sprints. With GrassHopper you can also group several ’sprint’ versions to one ‘release’ version.

All in all excellent meeting. Thanks to Ambientia for sponsoring the event in nice environment. Looking forward on next meeting! :)

Learning the git, Mobidentica now Open Source

March 24th, 2009

I’m learning to use the git, distributed version control system. It seems to be much faster then Subversion that I have used with my Google Code projects. I just created a repository on GitHub for Mobidentica project. Source code is available under the Apache License 2.0. If you like to clone the repository, use this:

git clone git://github.com/tlaukkanen/mobidentica.git

I’ll have to see if I’ll start using git with those projects that are on Google Code as it seems to be possible too: Benjamin Lynn from Google Developer Programs wrote a blog post on how to use git on Google Code projects.

Optimizing Trail Recording

March 22nd, 2009

I coded a prototype how we could record fewer GPS positions in Mobile Trail Explorer and therefore save some memory but still have the same level of detail of the trail. Video might explain it best. Unoptimized recording is on the left and optimized trail is on the right.

The algorithm simply checks if the current direction have changed since last recorded position. If direction isn’t changed over the tolerance value then we can replace the last position with current position. Otherwise we only append the new position to the trail.

  1. public boolean canRemovePreviousPosition(
  2.         Vector<GpsPosition> positions,
  3.         GpsPosition pos1) {
  4.  
  5.     if(positions.size()<2) {
  6.         return false;
  7.     }
  8.  
  9.     GpsPosition pos2 = positions.elementAt(
  10.             positions.size()-2 );
  11.     GpsPosition pos3 = positions.elementAt(
  12.             positions.size()-1 );
  13.  
  14.     // Calculate last angle of trail
  15.     double latDelta = pos2.lat – pos3.lat;
  16.     double lonDelta = pos2.lon – pos3.lon;
  17.     double lastAngle = Math.atan(latDelta/lonDelta);
  18.  
  19.     // Calculate current angle
  20.     double latDelta2 = pos3.lat – pos1.lat;
  21.     double lonDelta2 = pos3.lon – pos1.lon;
  22.     double currentAngle =
  23.             Math.atan(latDelta2/lonDelta2);
  24.  
  25.     // Get absolute value of direction change
  26.     double angleDelta =
  27.             Math.abs(lastAngle – currentAngle);
  28.  
  29.     // Check the tolerance (0.105 radians = 6 degrees)
  30.     if(angleDelta>0.105) {
  31.         return false;
  32.     } else {
  33.         return true;
  34.     }
  35. }

Adding Laconi.ca support

March 20th, 2009

I just coded a new version of Mobidentica application. Now you can define custom service URL when logging in. This way you can use it with all services that are built on top of Laconi.ca platform. This is possible because Laconi.ca has built-in support for Twitter compatible API.

I just tried it with identi.ca and miggi.fi services and it works great with both of them. You can download the latest release (v1.1) from here and try it out yourself.

What about next version? Maybe support for having multiple account support so that you could have timeline showing status updates from multiple services (like Twitter, Identi.ca and miggi.fi). When updating status you most likely would select a service where you want to publish your status. Any thoughts?

Mobile Trail Explorer v1.14

March 18th, 2009

It took a while to make this release. There was some kinky issues with the S40 devices which caused them to crash on NoMethodFoundException (Issue 145). Release notes for v1.14:

  • New logo and icon (Thanks Ash)
  • Improved MapCache initialization time
  • Fixed information screen scrolling
  • Splash screen hang fix (Issue 106)
  • WGS84 coordinates in degrees and minutes (Issue 162, Thanks Marco van Eck)
  • Fixed NullPointerException, NoMethodFoundException with S40 devices (Issue 145, 164)
  • NoSuchFieldError fixed (Issue 166)
  • Added decimal check to calculate time form (Issue 167)
  • Multiple formats for audio recording
  • …plus other minor fixes and features

Download binaries from here. Download source code from Google Code, here. Enter your issues here. Discuss about features and problems here.