02 January 2012

Learning Java for first time programmers

I'm designing a course for first time programmers to learn Java.  Here are some useful resources I found that I like:

Interactive Tutorials
  1. Introduction to Computer Science using Java (Bradley Kjell)

Lecture Notes
  1. Introduction to Programming in Java (MIT OCW)

Textbooks
  1. Think Java: How to Think Like a Computer Scientist (Allen B. Downey) - suitable for AP Computer Science, so suitable for younger students
  2. Introduction to Programming Using Java, Sixth Edition (David J. Eck) - link not working for me right now but I've heard good things about it
  3. Introduction to Programming in Java (Robert Sedgewick, Kevin Wayne) - contains case studies connected to real scientific or business uses, but means requires students to have a more advanced math background more suitable for 2nd+ year university undergrad students.

01 January 2012

Web Mobile App Development Tools and Libraries

Here's some tools and libraries that look interesting for web development, mobile App development, etc.

To begin, Firefox and Chrome, of course, are the browsers of choice for a web developer.

Tools for Firefox

Firefox has tons of tools for web developers! Take special note of:
  1. Firebug,
  2. Console²,
  3. DOM Inspector,
  4. FoxGuide,
  5. HTML Validator,
  6. JSView,
  7. LiveReload,
  8. PageSpeed,
  9. Phoenix,
  10. SQLite Manager,
  11. Web Developer.

If using Firebug, then also take special note of Acebug, FireRainbow.

Tools for Chrome

Chrome is younger and has less tools, but many web developers prefer Chrome over Firefox.  And there are definitely tools:
  1. Google Chrome Developer Tools
  2. Web Developer
  3. Firebug Lite
  4. Validity
  5. Color Generator
  6. Eye Dropper

JavaScript Validator

When programming in JavaScript, you must use JSLint to validate that the JavaScript you wrote conforms to modern recommended idioms.

You can run JSLint on the command line locally if the JSLint program is set up correctly based on the JSLint source files. But then a JavaScript interpreter outside of the browser is required, such as node.js, Rhino, or spidermonkey.  Another, more convenient, possibility is to use the jslint4java wrapper program.


Libraries

dust.js has been selected by LinkedIn recently as their templating engine to unify the way web pages designed in HTML and CSS gets filled with data generated by other server based programs written in various languages including Java, Grails, and JRuby.  It is free and open source (looks like MIT license)

PhoneGap is a free and open source (Apache License) library for writing cross-mobile-platform HTML5 app to access technologies native to the mobile platform (vs. programs being stuck in the browser).

For building gesture/touch-enabled UI for cross-mobile-platform Apps, there is jQuery Mobile, which is a very young project still, and is free and open source: dual licensed under MIT and GPL2.  There is also Sencha Touch, a more mature library that is free and open source, cross-licensed under GPL3, a modified GPL3, a free (as in beer) commercial software license, and a paid commercial OEM license.

You might also need a library to add MVC or MVVM structure to your App.  For that, consider Backbone.js (MVC) or Knockout.js (MVVM).

For everything else, there's jQuery.

See also:
  1. Building Large-Scale jQuery Applications
  2. Tools For jQuery Application Architecture – The Printable Chart

31 December 2011

Resources for Learning Web Development (JavaScript, jQuery)

Assuming you have some working knowledge of HTML and CSS, then learning to program behaviours into web pages requires learning JavaScript, and here's resources I've looked into to help you learn JavaScript programming:

eBooks and paper Books
By "books", I mean "Bound Optimally Organized Knowledge". It's organized for structured learning and completeness.

Books I've looked into (literally) and would give at least a 4 out of 5 stars for:
Books that look promising based on the "cover" only:
  1. jQuery Fundamentals
  2. Web Development Recipes 
  3. Eloquent JavaScript: A Modern Introduction to Programming
  4. MDN: JavaScript Guide
Interactive Tutorials
Tutorials are organized for structured learning, often in a hands-on manner, but usually leaves gaps in knowledge.  Interactive tutorials have a turn-based prompting mechanics to it.

30 December 2011

Transferring a Canadian domain to Namecheap from Go Daddy for a Blogger custom domain

There's been a lot of recent news about Go Daddy's missteps in terms of the SOPA legislation in the USA.  I'm in Canada, but I can't help but also notice the Go Daddy business and political policies aren't terribly aligned with the business and political policies of my business practice.  Plus Go Daddy's services are focused on the up-sell than actually servicing my business needs, so I decided to transfer my domains from Go Daddy to Namecheap.

Here's the short of how I transferred the domain of this blog from Go Daddy to Namecheap, and how I had to reset things for Blogger custom domain to continue to work.

Note that doing this will cause a bit of down time for your domain name!

16 December 2011

Passing Giants

Here's a list of deaths I find notable:

David Rumelhart - 1942 Jun 12 to 2011 Mar 13
- Pioneer in artificial intelligence, cognitive science, and connectionist artificial neural networks



Jack Layton - 1950 Jul 18 to 2011 Aug 22
- Leader of the NDP, the Official Opposition of Canada

Steve Jobs - 1955 Feb 24 to 2011 Oct 5
- Co-founder and CEO of Apple Inc. and NeXT Inc., and CEO of Pixar Animation Studios

Dennis Ritchie - 1941 Sep 9 to 2011 Oct 12
- Creator of the C programming language, and co-creator of UNIX

John McCarthy - 1927 Sep 4 to 2011 Oct 24
- Pioneer in artificial intelligence, cognitive science, and creator of the Lisp programming language