Sunday, January 22, 2012

Galaxy projects, applications - report

Thanks to the Samsung Galaxy 10.1 tablets donation I was able to start several projects with our students at CTU FEE. I would like to review our applications, give the status report and explain further plans in this blog.

I used the tablets to support the students in two different directions: degree thesis projects and education.

The 3C is a home for 20 PhD, master and bachelor students. They all work on various aspects of cloud computing and SaaS application design with the emphasis on the mobile applications. The work is organized as described in the "How to organize web project". Here are the major mobile applications:

Weather forecast widget project implements Android widget displaying the weather forecast using the ALADIN model for the Czech Republic. It installs on Galaxy tablets and Android phones too. The presentation layer development still continues. The application is fully functional available through the Android market and gaining popularity.

Browser Guru is an application helping the user to select the best browser for current type of connectivity. For example for the 2G, 3G/4G connectivity the Opera browser is faster than the default browser. On the other hand when on Wi-Fi the default browser provides higher comfort. Browser Guru is also compatible with the voice search (Most browsers are not). It can be used for tablets as well as for phones. Application is fully functional and available through the Android market. It has almost 24 000 downloads up today.

Menzy CVUT application has been designed for students of Czech universities. Currently it lists the CTU students canteens everyday menus. It enables students to quickly find the menu of choice and rate the foods. The application has more than 700 downloads and more than 500 active users. Application itself is built as a platform allowing to import other canteens menus. Get in touch with us, if interested. Application is fully functional available through the Android Market.

Cloudcardz is an application aiming at business cards exchange. While networking, at conferences or events we exchange business cards. They are then piling on our desks and we do not remember what was the occasion, whom we met and and how to quickly convert them to a computer. This application allows quick exchange of business card data using NFC or QR code. The app contains only pointers to personal data. Change of a phone number or other data is automatically updated. Some more development is required. The pilot will be available soon.

We started developing a simple helpdesk application more or less as an educational demo. It allows sending a request ticket to an operator from a mobile device including photo and the location information. After sending the request to the helpdesk, the application creates a ticket, which is handled by an operator. The conversation continues between the operator and the user till the ticket is resolved. We continue working on it  and it will be finished in May 2012. It is more interesting, that we have derived other  two apps from the original code.

The helpdesk functionality will serve to businesses getting orders through a job search  portal. The business to customer interaction is very similar to helpdesk. Typically, craftsman communicate with customers after working hours when they get to the office. This application will enable them to give offers to customers by smartphone. This app is also scheduled to be piloted with customers in the May framework.

The next app derived from helpdesk code was competing in this year eClub. It is focusing on supporting sales. The scenario: shoppers in the store download an app  by scanning QR code. After garment selection the shopper takes a photo and saves it on a store portal. Information about the picture will be send to customer's friends to comment. This application is in the development and the first working pilot version is planned for end of May.

czSMS is an application enabling sending free SMS messages using the free Internet SMS gateways. The app is developed for multiple mobile platforms using the Phonegap platform. It is in the early development stage. All the technological and supporting issues has been solved and the design is beginning with the UI and wireframe design. The pilot application will be available end of May 2012.

Total of 60 students took the Internet Application Development course. The goal of the course was to teach students to develop web Android applications. Students learned how to use the standard Eclipse IDE and the Google plugins for Android and App Engine. They were organized in teams of four persons. Each team came with their own app proposal. All together the class was working on fourteen applications. Teams had to maintain a web page for the project and track the development. I have organized two demo classes where students were presenting their progress to get class comments and suggestions. The semester was concluded with working pilot applications.

Three months are too short to create full featured app, nevertheless I expect, that some of the students will further working to finish their projects.

What are the benefits of the development? Three applications already on the Android market and several other applications are scheduled for May. The current activity and the mobile applications development created awareness and high visibility at our university and in media too. I am hoping that the development experience will attract more students  to pursue their projects. Most of the university staff is aware of the development too and became interested. Some of the department want to join us.  Currently we are designing new course for students in the first year of study.

There are also things we need to improve. The biggest weakness is the graphical quality. Great graphics and usability are very important for the customer perception. We are actively looking for a partner who will help us. We are ready to support these groups with  tablets to enable their creative powers and motivate them to cooperate.

It is quite difficult to develop a new application. Many different skills are required and it will still take us some time to develop really successful with hundred thousands of downloads and clear benefit for users. The weather widget is probably the most advanced, also the Menzy and Browser Guru apps are finding users. There are many other applications in the development with the targeted date end of May. Stay in touch and help us improve.

Saturday, January 14, 2012

Galaxy projects, applications part II

Thanks to Samsung we have started with our students working on the latest Samsung Galaxy tablets.  Currently we are evaluating the first batch of VIA projects. The experiment number II starts now. The first year university students of Open Informatics program will receive the tablets and the task is the same. Be inventive, hardworking and have fun. Develop an interesting Galaxy tablet application. 

How are we going to be organized? This time the projects will be part of the Java course. The students learned the basic Java programming in the winter semester and they continue in the advanced Java course. One of the course requirements is to deliver a Java project and we will create it on Samsung Galaxy tablets.

Why tablets, why Android? Many consider the tablets the new very fast growing segment. Currently there are 4.3 billion mobile devices in the world and this is more than TV, fixed lines or PCs. Tablets are introducing new user interface unleashing new application design and capabilities. The UI is easy for everybody much more natural. This all is opening new possibilities. The new tablets are a great chance to work with the latest technology. On the other hand, keep in mind, that the tablets are not laptop replacements they focus on everyday users, not programmers. We still have to discover how to take full advantage of them, how to address the largest number of users.

Is the Android good platform to learn Java programing? First, Java is the primary programming language for Android apps. There are lot of application examples in the open source. The programming environment IDE plug-ins are greatly simplifying the development. Google is providing better and better support to developers. All these are reasons to motivate students to learn new skills. It is also a great opportunity to get creative and invent new applications and introduce new ideas.

I believe, that programming is a combination of an art and discipline. It requires quite some time to learn a language. Mostly it is a self-learning process. The learning curve is steep once you have a good motivation and this is where I am stepping in. Let's enjoy creating something new on the latest technology and have fun too.  

What is the timeline? I am happy I can start working with students early in their university education. There are many interesting disciplines where they would need programming. My mission is to show students the opportunities for inventing and turning their ideas to real products. I hope, some of the students will join us during summer working with us or completing their own projects. Every summer we offer the best students an university internship. Others with strong idea and motivation can join the eClub, learn the art of creating startup and compete for winning seed money. For a freshman in the first year it seems to be terribly long to start working on a baccalaureate thesis, but it is round the corner. Working on problem oriented projects early will help them learning all the necessary skills to write great thesis. 

I’d like to organize our work similarly as the VIA course. We will run all as projects see the previous blog. We will keep all in English. Why? We need to cooperate with our colleagues. The world is huge, but Internet connects us. Many students around the world are like you and we need to communicate with them. We keep all on the open Internet, to let other comment. This is a good source of advice. Openness introduces good attitude and cooperation. I will encourage all students helping each other and use all possible resources. I will leave space for all students to come with their own ideas not only for the projects. Think what it is you want to create. How are you going to change the world? Think big! Internet is democratic.

I am looking forward to see the students creating new exciting stuff! Any questions? Send me an email and ask. Join us!

Saturday, January 7, 2012

How to organize a web project

This blog shows how to organize an Internet project. What needs to be in place before you start coding. The essence is simple. Come up with a good idea, set the team with strong commitment, formulate the minimal functionality, create an Internet site, communicate, use simple work flow management and start coding. 

How big team do you need? You can start alone, but the best is to have one or two friends with a complementary expertise. The diversity of views is great and it yields innovation. Besides, it is also great to have someone for discussing the problems and making decisions. The team must be excited about the project and committed to make the things happened. Team allows you sharing the joy of the development. Discussing and arguing with the team is always very rewarding. Of course, there are also very successful “lonely rangers” on the Internet. They need to master the art of outsourcing to complete all project tasks.

It is very important to communicate and discuss your idea. Even if you have not written a single line of the code inform your future customers and friends. They will tell you what they like and what they want. Don't be afraid someone will steal your idea. There are many other people on Earth with the same idea, but the team with the best execution and strongest commitment will win. You also do not need to be the first. Sometimes the second mouse gets the cheese.

To inform your friends you need to be seen on the Internet. How to do it? Start with finding a descriptive  name for a project. Check if the domain name is not taken yet, many sites provide this information. Select the domain carefully, once the page views start to grow it is too late for a change. Set your home page. Don't program the web from scratch. There are many different sites where you can create the homepage for free and in a matter of minutes. Go for the bigger players, they stay around longer. Use some of the stock templates to achieve an eye appealing look. To personalize your site create a project logo.

The key for success is a good idea. Your web must clearly communicate the idea, it must state what you are offering. The idea needs to be well formulated. Keep it simple! The resulting application or service will be offered to people like you and no one wants to study complicated stuff. Define your audience! What are you solving and who will use it?  Your project description, explanation must be short and crystal clear. Check it by putting together a sentence like this:

(project name) is developing (this offering) to help (an audience) solving (a problem).

This sentence is the core message on your site. You can put on your page more detailed explanation or further thoughts, but an essay, mission statement or a vision shouldn't be too long, two, three paragraphs at maximum.

List the team members with photo. Each person should describe previous experience, successes, awards, interests etc. Inform about the project progress. To get customer feedback provide contact information. Do not show personal phone numbers or mail addresses. You don't want to be woken up at 3:00 AM by some Argentinean geek wrestling with an obvious problem.

Before you start coding you should have a plan for implementation of the project. Start with the description of the minimum functionality. Product, the result of the project, needs to be very, very simple. To development of even the simplest product will take quite some time and requires a lot of effort, you will be surprised. No matter if it is an one-man show project or several people will cooperate, you need to get organized. The purpose of organizing is to not loose focus, stay productive and see the progress. There are several project management tools available such as Pivotal tracker,  Campfire etc. To maintain the project with such packages may be too much overhead for a starting team and a simple blog might serve at the beginning.

You have to learn regularly recording the progress and set the next development tasks. Report at least once a week. The progress records will help you learn how to more accurately estimate duration of the next tasks. You will learn better planning. From leading many projects I know, that planning small tasks is much better than larger milestones. Create tasks in duration of few hours. Sometimes the task turns out to be too big and needs to be broken to several smaller ones. No problem, record them to your work flow system and continue. If you work in a team set regular meetings to check the progress. The meetings don't need to last too long. 15-20 minutes are OK. Each team member should report the progress, inform about the problems and suggest further steps. Meetings and communication create good spirit in the team and push the project ahead.

Once you have all the above in place you are set to go ahead. Here starts the regular SW development process.  Select technology, select revision control system, set the build system… Remember, only good discipline in running the project will bring good results.

I am working with university students teams and in all my activities I try to follow the described process. I am leaving on students to chose the portal and development technologies, but I am insisting on setting the reporting tools and generating the communication. The described rules are very simple but when followed they stimulate the team to develop organizational habits. Our students usually have great or good programming skills but very low awareness of how to run and organize projects and of course, no hands-on experience. From my industry experience the organizational stuff is equally important as the programmers quality. I also know, that the business processes mustn't suppress activity and enthusiasm. The managers need to discover a balance.

This simple system based on free Internet tools support sharing, creating traction, exciting other groups, and finding other followers. It is also allowing me to follow the teams progress and help them when required. Also reporting the activities of all teams on my pages is very simplified. I can provide links to all projects and all is for free, except we have to do it. Best of all, I hope, this operational habits are setting a good example for the future project development of my students. I try to keep all on the free Internet to let anybody to comment, help us or join our efforts. Of course, this is with the students consent. See the links at the main menu of this blog.

Let me know if you have comments or suggestions for improvement.