Free Programming Books List

Via Twitter I found out about this comprehensive list of freely available programming books maintained at StackOverflow. The list is organized by topics such as the following:

  • Graphics Programming
  • Language Agnostic
  • ASP.NET MVC
  • Assembly Language
  • Bash
  • C/C++
  • C#
  • Django
  • Erlang
  • F#
  • Forth
  • Git
  • Grails
  • Haskell
  • HTML
  • Java
  • JavaScript
  • Linux
  • Lisp
  • Lua
  • Maven
  • Oracle Server
  • Mercurial
  • NoSQL
  • Objective-C
  • Oracle PL/SQL
  • Parrot / Perl 6
  • Perl
  • PHP
  • PowerShell
  • Prolog
  • PostgreSQL
  • Python
  • Ruby
  • Scala
  • Scheme
  • Smalltalk
  • Subversion
  • SQL (Implementation agnostic)
  • Vim

Here’s the link again: freely available programming books.

iOS Topics For Upcoming Mobile Applications Development Training

A quick update to list some of the iPhone/iPad topics we will cover in this month’s mobile applications development training:

  • The anatomy and types the iOS applications
  • User interface elements such as tables, tab bars, pickers
  • Navigation patterns in applications with multiple screens
  • User interface autosizing and autorotation
  • Storing and loading application settings
  • Data persistence using property lits, object archiving and SQLite
  • Best practices
What do you think?

Android and iPhone Training Scheduled For December

Thanks to Tonex, I will be teaching another mobile software development class in December.  The course will focus on Android and iPhone/iPad development training.

These are the areas our Android hands-on lessons will cover:

  • Android features and building blocks
  • Development choices for the Android platform – Types of applications, development environments and debugging tools
  • The anatomy of a native Android application
  • Android application user interface – Views, layouts, widgets, menus, dialogs, and data binding
  • Data persistency options in the Android platform
  • Establishing connections – Internet, web applications and other devices
  • Utilizing the hardware features – Camera, GPS, etc.
  • Interacting with other applications on the device
  • Testing Android applications using the testing and instrumentation tools
  • Android development best practices

Interesting, right?  I will post the iPhone/iPad topics in a few days.  Stay tuned!

Are You Ready For Mobile Development?

Of the ten students in my most recent mobile software development course, two work directly in software development.  The remaining eight are either marketers or have executive responsibilities in their company.  This mix of skills and responsibilities, a little different from the norm for a hands-on course like this, generated an interesting combination of points of views and expectations.

It is not possible to deeply study the iPhone/iPad, Android and BlackBerry platforms in only five days.  In order to get the most value out of the class, we worked out a nice flow that started with discussing the foundations of these mobile platforms and their similarities, followed by an examination of their differences.  We also wrote a BlackBerry application, and reviewed the code for an iPhone and an Android application.

The transition from coding on one platform to coding on another platform was not smooth.  The programmers in the class told me they had expected to work on simple ‘Hello World”-type examples, and they were surprised that I brought a whole end-to-end application they would need to code from scratch.  They said this was arduous at times, but also rewarding because they worked on something that contained real-world solutions they can apply to their own applications.

Mobile software development is challenging

It was interesting to observe fellow technologists realize the magnitude of the challenge in developing products that target more than one mobile platform.  For example, how difficult it is to find expert leaders and programmers that can be effective on iPhone, Android, Nokia, BlackBerry and Windows mobile.  Or how difficult it is, even for teams with a clear vision of the systems’ goals, to create satisfying designs for each platform.

The situation is similar in the tools arena.  Only a few viable cross-platform development tools exist today, while many problem domains require a level of access to device capabilities, performance and other features only achievable by native applications written with the platform’s development tools.

It takes a committed team

The active participation of company leaders was another interesting highlight of the course.  I’m happy they signed up.  I think it is important for them to know how their products will work, and what it takes to build them.  This is a responsibility they share with their colleagues from the software development department.

A great experience this class.  Wouldn’t you agree?

BlackBerry Development Class

Are you or your team interested in BlackBerry development?  I will start teaching a BlackBerry development class in June 2010 and I want to share some preliminary details with you.

What This Class Is About

This will not be your typical class, plagued with slides, with few and short exercises.  This class will consist of a number of hands-on labs where you will build an entire real-world BlackBerry application from scratch.

Along the way, you will learn the main concepts, principles and practices that apply to BlackBerry development.

When you finish this class, you will be able to answer the following questions:

  • What is a BlackBerry application? What are my options if I want to develop BlackBerry applications?
  • How do I create the look of my application?  What is the best way to use the available UI elements to create a great experience for my users?
  • How can my application save information on the BlackBerry Smartphone?
  • How can it connect to internet services, for example, Twitter?  What if it needs to talk to my enterprise applications behind a firewall?
  • Can my application interact with other applications and the hardware in the Smartphone?  How do I write applications that take advantage of the camera, GPS and phone on the device?
  • How do I debug my application?
  • What are the best practices for creating a great BlackBerry application?  What are the gotchas?
  • How do I make it easy for people to install my application?

Who Is This Class For?

This class is for any software craftsperson with an interest in building BlackBerry applications.

If you run a software development team and are interested in the BlackBerry platform, this class will definitely help your team.

Stay Tuned

I will be posting updates with more details about this class in the near future.

If you are curious about this class or have any suggestions, I’d love to hear from you.  Please get in touch.