Toward iPhone Apps Development

November 14th, 2009 by Amir 1 comment »

It’s been a while since I wrote about how my Nokia is better than iPhone, and tough I think not much have changed (well.. maybe a little :) ), I can’t argue against iPhone success.

This is why I decided to try (as many others) and gain some profits from iPhone/iPod touch apps. In order to that I had to start learning some new skills: using MAC OS and its “unique” concepts, developing in objective c (new language and syntax) and using a new IDE (xCode). Not a trivial task as I believed..

So today I wanted to share with you a great starting point for the later two skills I pointed out. Stanford university has a course called CS193P which teaches how to build an iPhone application. This course is available online including the lectures videos, slides and assignments.

The course and its assignments are built in a very constructive way from the language basics to a full featured application communicating with Twitter.

After covering most of the course and its assignments, I can try and conclude that not only it is an enjoying course, I also managed to gain a solid understanding about iPhone development. Moreover, they cover some really important best practices that I believe are hard to find if you just surf the web for iPhone code snippets.

So even if you past the point of understanding the objective c syntax and how to build a basic application, I really recommend going over the lecture slides, making sure you don’t miss some important practices.

Upgrading to WordPress Platform

November 3rd, 2009 by Amir 4 comments »

For several months I’m playing with thoughts I have regarding how to integrate my blog with a website that I want to build for myself. Though there is not much content yet to publish, I wanted to have a platform that will allow me to easily publish my future ideas, projects and blog in one centralized place.

After exploring several options, I decided to use WordPress, and today I installed the platform on my hosting service. It took me less than an hour to set it up together with my old posts!

The installation process is an ease. You simply upload a compressed file to the hosting server, unpack it, create and configure a database, and from that point on all you have to do is to open the install page and follow the web based wizard.

Beside blogs management, the platform also allows to add pages, media and more easily and intuitively. It has a built-in blog import mechanism, so it was a matter of seconds to move my old posts at blogger to my new site.

Now I still need to fine tune some areas, but overall I’m really satisfied with the midterm results. I guess that the real test for it will come quite soon when I’ll be ready to publish the new content.

By then, I’ll be hoping that you enjoy the new look & feel :)

Google Calendar Event Gadgets?

August 20th, 2009 by Amir No comments »

When I started researching on interacting with Google calendar API, I came across a cool feature offered by this API, and that is the event gadgets.

Although the calendar UI is quite fixed and developers can’t do much to extend it, Google did leave the door open for some extensions using this feature.

Event gadgets are like any other event on the user’s calendar, but how it looks is mostly up to the developer. It will appear as an icon on that event day, and when clicking on it, it will open an iframe which will show any given URL. The size of this iframe is also configurable.

To set it up using the .NET API library, simply create an event object and set the WebContentLink properties:

WebContentLink conetentLink = new WebContentLink();
conetentLink.Title = “Buy tickets”;
conetentLink.Type = “text/html”;
conetentLink.Url = “http://myserver/tickets.aspx?show=hair”;
conetentLink.Icon = “http://myserver/money-icon.jpg”;
conetentLink.Width = 200;
conetentLink.Height = 100;

The contect can be either images, HTML pages, or igoogle gadgets.

In Birthdays Synchronizer, I used this feature to create the birthday reminders on the users’ calendar. When the event is created, the friend name and picture URL are saved as part of the parameters on the gadget link, allowing my hosted page to show this information nicely to the user:

Well.. maybe it does require a little more work on the UI :)

Birthdays Synchronizer 2.0

August 17th, 2009 by Amir No comments »

Today I finally released the new version of the Birthdays Synchronizer application. As I wrote in previous posts, I wanted to enhance it with a new and exciting UI, and chose WPF for this purpose.

Although my learning curve for this technology was a bit slower than I expected, I’m very pleased with the results :)

I used Expression Blend 2 for designing the UI and animation (or storyboard…) and MVVM pattern for the acutal development. While working with WPF I faced more than one gotcha (it has some issues after all..), but eventually I managed to overcome them all. Microsoft did amazing work on this technology, which offers so many possibilities and really changes the way desktop applications are developed and displayed.
Beside the UI changes, the new version also interacts with Google Calendar, allowing to synchronize the birthdays to this calendar in a very special way:
If in a certain day you should be reminded for a friend’s birthday, a little cake will show up on the top of this day reminding you of it. It also shows the picture and name of the person when clicking on it..
In the coming posts I will elaborate more on this integration and some of the things I had to overcome with WPF.

Getting started with MVVM and WPF

July 28th, 2009 by Amir No comments »

For some time I am working on enhancing my Birthdays Synchronizer application. The last modification I made is to support Google calendar. But before releasing it I decided to upgrade the application look & feel to something more appealing.. :)

Since I’m quite experienced with the .NET framework, I decided to give it a shot and implement the change with WPF.

When I just started the development, I found that the MCV pattern is not working so well with WPF. This is mainly because the view layer of WPF, based on XAMLs, has enormous capabilities (the bindings in particular) which make it hard to follow the traditional controller-viewer separation.

Here comes the part where MVVM pattern comes in hand. MVVM stands for Model, View and View Model. The model is the data object we are working on. For example, a birthday object, consisting from the person name and birthday date. The View Model is the layer responsible for the business logic and the operations that supports the view. For example, saving the birthdays to Outlook or getting from Outlook the available calendar folders. The view is the actual UI. It relays on the View Model while the View Model itself is not relay on any view. This point is important to follow and understand. It means that the View uses the View Model for its operations, but the View Model must not know that it works with any specific view.

If you are just getting started with WPF development, I really recommend using the WPF MVVM toolkit. It adds a solution template to visual studio which allows you to create WPF projects following the MVVM pattern. The projects it creates have built-in solution folders for each MVVM layer and some classes to get you started. It also comes with a great document describing the MVVM patters in details and in a simplified language.

Good luck :)

Free, Working Source Control

July 3rd, 2009 by Amir No comments »

After going through a rough semester, I finally have time to get back to the things I like..!

In this post I would like to talk about source controls.

During my last semester, I had to develop several projects together with my group. I searched for a way that we could work efficiently, just like in my real job where we develop in teams. Therefore I looked for a free source control solution. I wanted it to be simple to install, integrated into VS 2008 and most important – free.

After some trials and errors, I found almost all the things wanted from a source control hosting in xp-dev.com. This site offers free on-line subversion hosting (SVN) that supports all the features needed from a standard source control (versioning, multiple users, branching, etc) and it comes with 500MB storage waiting just for your usage. Since it is on-line, there is no need to deploy any server of your own.

The second thing that I needed is to integrate it into Visual Studio, so it will be simple and intuitive for the developers in my group. So I got a recommendation to use the AnkhSVN plug-in.. They really had done a good job with it! This open source plug-in installs easily and allows you to do almost everything from your IDE (once you connect it to your account with xp-dev): check-in, check-out, diff, branching, merging and much more. It really reminds the Visual Studio team systems except that there is no option to manage tasks.

Using these solutions allowed us to make our work in a group fast and very efficient – no more sending the code over mail, looking manually for the last changes and searching for older versions by looking in our Gmail accounts. During our intensive work on our project these free solutions did not fail us even once.

So if you ever need a free solution like that, even for your own projects – you should try it out.

My first facebook application

April 11th, 2009 by Amir No comments »

It was all started after I forgot a few of my closest friends birthdays… I was frustrated that I could not keep track on those dates. facebook birthday reminders were not enough for me since I did not had the will nor the time to look for “today’s birthdays” each time I’m on facebook.

So then I thought, why not having a small application that will sync my friends’ birthday to my Outlook? Then I could keep track on those important dates and also sync it up with my phone!

Yesterday it was the time I decided to take this initiative forward, and developed my first facebook application! Feel free to check it out..

In the coming posts I will elaborate more on the development process and some tricks I learned making this application happen.

Stay tuned :)

Google’s YouTube player for s60

March 21st, 2009 by Amir 2 comments »
Yesterday Google released a YouTube application for Symbian s60 based devices. This new application allows easily searching and watching of YouTube videos on mobile devices.

Well, it is sure looking promising! After installing it on my Nokia n85 and starting it, it took just 1 second to load and display on line content. This is how the main program looks like on my device:

You can search for any videos you’d like and you can also look at related videos, just as in the YouTube web version:

And here comes the big surprise. When you select a movie, the application uses its own implementation of video player, providing a supper fast loading and buffering time. It takes almost no time at all from the moment you select a movie until it starts playing. It also rotates the screen automatically with a nice spiral effect:

This is sure another great product Google is releasing for mobile devices, and a brilliant decision of them to leave J2ME aside and concentrate on the advantages Symbian platform has to offer.

Comparing the N85 and N95 video output

March 7th, 2009 by Amir 1 comment »

Now that my exams are finally over, I have the time to continue messing up with the thinks I like.

This time, I decided to compare the video quality of my N85 with the one of the N95. During my trip to the northern of Israel, I put the two devices adjoining to each other and pushed the record button!

Instead of filming static objects, I captured the videos while driving (don’t worry; it wasn’t me holding the wheel…). After downloading the videos to my PC and comparing the results, I found that although the N85 image is a bit smoother (less pixels), the two phones delivers pretty much the same quality.

In a side note, I was pretty surprised to see that although the speed of the car (around 110Kmph), the two devices produces stable images and good quality videos.

See it in your own eyes (hope the upload wont damage the quality too much):

N95

N85

Geotagging?

February 11th, 2009 by Amir 1 comment »

Now days when more and more mobile phones are equipped with both a good quality camera and a GPS receiver, there is no reason why not to combine the two and create images that the location where they were taken is embedded in them. Then, uploading the image to web albums services allows you to see the pictures on a nice map!

So now that I already explored other cool features of my Nokia, it is time to test the geotagging feature.

First of all, If you have Symbian series 60 3rd edition less than feature pack two (like N95), you can do it too! You just need to install Nokia’s Location Tagger application which will add this feature to your phone. According to their blog, you can also install it on devices without a built in GPS and use an external one connected via Bluetooth (like N73).

Back to the Nokia N85, when you’re using the camera, the device will automatically try to fetch the location from the GPS receiver. If the signal is strong enough, when you take a picture the location will be embed automatically. So there is nothing you should do except taking the picture.

When you browse your pictures on the phone you will get an indication if the image is encapsulating a location as well:


(notice the small satellite icon below the picture)

What’s next? Uploading the picture to a web album service that supports geotagging. There are two main options to do that, either by copying the picture to the PC and from there to the web, or a direct upload from the phone.

The built-in upload services are Flicker, vox and Ovi. If you want to use Picasa, Facebook and others, I recommend to install and use Shozu. Otherwise you are quite limited with the built-it services.

Note that only specific services support Geotagging. Flicker and Picasa are the main ones. For flicker, you need to adjust your account setting to enable using the image’s location attributes. So now that I’ve upload my image to flicker, I can see it directly on the map:


With Picassa, I will be able to see the location only if I have Google Earth installed on my PC, making it less useful but it looks cooler.

In conclusion, this feature has a great potential and is really improving your virtual photos albums. But unfortunately more time is required for additional services to full support it.