Sunday, December 30, 2012

Messaging for Mobile Apps (XMPP)

I've been looking around for a solution to messaging between devices since I'd like to experiment with creating a lite version of a game (Avatar) that I worked on in college as a learning experience. More about that at another time.

XMPP (Jabber) looks interesting. What's really attractive is that I may design the App with no server-side component with just message handling on the Internet. It's different since Avatar in college depended on shared memory (common) and only used a message queue for a portion of the game.

Here's video that got me started (Hulu developers):

Building Asynchronous Communication Layer w XMPP, Ruby, Javascript
by Andrew Carter and Steve Jang

And an interesting article:

And a JavaScript library to experiment with:

Jabber server to experiment with:

I've been working through the XMPP Professional Programming with JavaScript and jQuery book. (Jack Moffitt's Blogbook site, book forum, and Github with code.)

A very valuable link to know about relates to CORS and cross-domain security issues:

And root article on CORS:

Another interesting link -- covers configuration issues related to cross-domain:

Build a web-based notification tool with XMPP

Covered in the book -- more reading some day on the theory behind Google Docs multiple editors of a document:

Saturday, December 15, 2012

Mobile Design Prototyping

This is an example of what the Internet can do. If you have a good idea, you can assume that a bunch of other people have the same idea. It's the team that executes quickly, effectively, and with some luck that will succeed. I wanted to do some mobile prototyping and ran across the following list:

I am interested in HTML5 app dev so am looking for multiple platform support. Many are iPhone/iPad only. There are a set of solutions that are designed to string pages of graphics together adding hotspots to create a prototype and others that let you mock up prototypes using components. I'm interested in the latter since I'm heading towards creating a mobile app, not just designing one. Some that I've found and am experimenting with: -- This is one that I used to create a simple 5 screen prototype of an attendance app for work and am favoring now because I like the feel of the application. The Plus plan is $24/month as of this post.


Fluid UI

Justinmind -- This one is a Windows/Mac app with web tie-in. It looks like a more comprehensive and full featured product for a professional designer.

Update: found this site recently...

Tuesday, December 11, 2012

Mobile Design Video

A good video on mobile design at Marakana:

Hampton's 6 Rules of Mobile Design
  1. On mobile, simplicity is a requirement.
  2. Simplicity is a balance between comprehension and brevity.
  3. Understand, and then optimize your core value proposition.
  4. "Where?" is more important than "who?"
  5. Assume terrible dexterity (child, drunk, old person trinity of testers).
  6. The footer is a dead zone.
Where refers to home, transit, bars, toilet.

He also makes reference to Dieter Rams, a noted industrial designer:

Tuesday, December 04, 2012

The Importance of WIP Limits

In Kanban there is a concept of Work In Process limits for more efficient overall operation. I've felt this myself recently as we enter a slower time of the year at work. When we're not operating at 100% (or more) of capacity, we have time to check our work, avoid mistakes and rework, and even consider process improvement.

Something to think about the next time you're heading into a period of 100% utilization. It may seem efficient, but find ways to reserve some buffer time.

Tuesday, October 16, 2012

Alvin Roth Wins Nobel Prize

I was fortunate to have worked my way through college as an Undergraduate Research Assistant with the Economics department at the University of Illinois working on multi-player bargaining experiments funded by some NSF grants where one of the researchers was Al Roth. He was already well known in game theory at the time these experiments were conducted.

The Sveriges Riksbank Prize in Economic Sciences in Memory of Alfred Nobel 2012 was awarded jointly to Alvin E. Roth and Lloyd S. Shapley "for the theory of stable allocations and the practice of market design"

Three of his earlier papers where we (Ron Harstad, Michael Barr, myself) contributed by building multi-player experiments on PLATO:

Expectations and Reputations in Bargaining: An Experimental Study (1983)

The Role of Information in Bargaining: An Experimental Study (1982)

Sociological versus strategic factors in bargaining (1980)

A footnote in history!

Tuesday, October 02, 2012

Google Apps Script Web App with Spreadsheet

Google Apps Script is a fascinating technology for putting together web applications using the Google Apps environment as the infrastructure. Here is a quick example of a public web application that sets 10 cells in a Google Apps spreadsheet to a value.

Note: Logger class does not work in an event handler.

I used the GUI Builder to create the simple interface:

Just make sure you set the parameter to be passed in the event handler. See the following stackoverflow item for more detail:

Like magic you have a web application. To see it in action go to the following public URL:

And you can see the spreadsheet that is modified by this script at the following public URL:

For some fun, open the app in one tab and open the spreadsheet in a separate window. You can modify the value in the application tab and watch the cells change in the spreadsheet. This is a view-only spreadsheet, but it is being modified by the web application.

Next up is writing a script to pull info from Google Analytics since I need to do some combining of statistics from there regularly for work.

Wednesday, August 29, 2012

Cloud Services (API) Presentation

Great overview of some current cloud services with APIs for mobile and web apps:

DevOps to NoOps: 10 Cloud Services You Should be Using (Russ Mason)

Some cloud services mentioned in the presentation to check out:

Loggly (logging)

SendGrid (sending email)

PubNub (fast messaging)


Twillio (telphony services)

Russ Mason is founder of MuleSoft. They provide a layer between a bunch of the APIs and Apps.

Tuesday, August 28, 2012

Video: What we're learning from online education

Fascinating and enthusiastic look at online education from one of the founders of Coursera.

What we're learning from online education

Interesting approach is that the courses have time frames just like a college course. The videos can be watched at any time during the week, but there is a schedule and the course runs for a particular number of weeks. Top universities so it's a brave new world in online education.

Monday, August 27, 2012

Video: Teaching Math with Computers

From the video:

What is math?

1. Posting the right questions

2. Real world math formulation

3. Computation

4. Math formulation real world, verification

The idea is that computers should do much of the computation and have the study of math more focused on the other 3 elements.

Teaching Kids Real Math with Computers

Thursday, August 23, 2012

Video: Intro to OAuth

A little rambling, but a gentle introduction to OAuth 1 and 2.

OAuth - Everything You Want to Know (Hopefully) [Pratap Chilukuri]


OAuth Playground

Thursday, August 16, 2012

Video on Working with Distributed Teams

Good overview presentation on working with distributed teams. Not only ideas for technologies to use, but also practices and approaches.

Technology is Your Office (also Skype screen sharing) (online IDE) (wireframes) (wireframes)

Tuesday, August 14, 2012

Testing HTML5 Canvas

Interesting blog posting about some of the issues in testing an HTML5 canvas app:

Gliffy is a cool diagramming program that is Flash based and moving to HTML5. I find it convenient to use for straight-forward diagrams. Still revert to Visio when needed (import SVG from Gliffy).

Monday, July 30, 2012

Tips for Working with an Overseas Team

Working with distributed and overseas teams is a fact of life these days in technical environments especially and knowing some basic tips will utilize the talents of the entire team more effectively.

Time Zones

Time zone differences can accumulate to mean real schedule slippage so you have to try to use the time zone difference to your advantage. For example, if the shift in India starts 10 hours ahead of east coast time consider working in the evening for an hour or two to prep work plans for the next day. When you arrive in the east coast morning, the team in India will have had several hours to work on tasks that you'd agreed to. If you wait until the morning you may miss an entire day of productivity in India.

This time zone issue even comes into play with east coast / west coast teams. If your west coast team gets a late start they are going to push the east coast team to have meetings at the end of the day. Not always practical. And having the west coast team get up early constantly is often not workable, especially with tech workers who seem more prone to night work than morning work in my experience.

Asynchronous communication like email helps of course, but still, email that is not responded to for many hours requires more time to come back up to speed. If you are both online working and can respond within 30 minutes or so the thoughts behind the email will still be quick to draw on.


Verbal communication can be challenging with language barrier and accents so I find that technical conversations and involved explanations are best handled with email. Having a call several times a week is important though to establish an emotional connection with the overseas team.

Make sure you respond to questions from the overseas team promptly. Just deciding that they'll figure it out is a recipe for rework and lowers morale. I also like to solicit feedback and suggestions as there are some incredibly talented people working in India and elsewhere and as a team we need to tap the talent of all members as much as possible.

Importance of an Issue Tracking System

Having issue numbers to refer to as a shared language (interesting comparison to mathematics as a universal language) is very helpful. It takes time to establish a procedure with the team to make sure everyone is being diligent about using the issue tracking system, but it really pays off in adding shared organization around the work tasks.

It's very handy to be able to pull Excel extracts from the issue tracking system to build ad hoc reports. And investing in some Excel macro development to create regular reports instead of developing full online reports (at greater expense) can be a reasonable way to go, especially if the product manager or another in-house team member writes Excel macros. Reports can be adjusted quickly for reporting to senior management.

Quality Assurance

Although QA should definitely be part of the overseas team's process, you need to have either in-house QA or QA provided by another vendor. I would argue for at least some minimum QA by in-house personnel who can also double as support because they know the product. Even if the overseas team produces perfect work, there are going to be misunderstandings around requirements and an in-house QA team will be more likely to pick those up. The in-house Product Manager also has to participate in QA.

Personnel Issues

It's really essential to have localized management that's responsive. It's just not practical or fair to manage an overseas team of a dozen or more at an individual level. There are going to be personal issues as with any team and not being present physically makes it impractical to know what is going on. Having a good relationship with the management onsite with the overseas team is important. Invest in it.

Financial Issues

The overseas team needs to provide good time records and they need to be tied back to the issue tracking system so you can monitor and defend the costs associated with various development, QA, and support issues. It will take a few (monthly usually) cycles to establish a good routine.

Management Philosophy

On software teams and with the rise of Agile in particular, managing teams with Theory X is not effective so the skilled manager of an overseas team (any team really) needs to find a way to encourage the team to produce great results using a Theory Y philosophy.

Wednesday, May 30, 2012

Mobile HTML5 Dev Test Site: RingMark

Facebook sponsored test suite for HTML5 mobile development. Very cool.

Amazon's Journey to the Cloud

Amazon's Journey to the Cloud (by John Rauser)

Interesting history of how Amazon evolved from 1994 to about 2011 on the technology side.

Enjoyed the comparison of successful software development to the development of the Gossamer Condor where the recovery from failure was optimized.

Rauser is a big fan of Continuous Deployment.with pointers to Eric Reis and Timothy Fitz.

Also mentioned is performance analysis and how important site performance is as described in the presentation (2009) by Eric Schurman (Microsoft / Bing) and Jake Brutlag (Google).

Sunday, May 13, 2012

Mobile Development at LinkedIn

Really useful 1 hour overview of how LinkedIn is doing mobile development. Node.js, native/HTML5 mix, various tools. Well worth the time.

Sunday, May 06, 2012

The Second Copernican Revolution

This is a change of pace from project management, software and mobile development. Astronomy has always been fascinating to me.

I was aware that other planets had been discovered outside of our solar system, but the count is now in the thousands and the thinking is that there are likely more planets than stars in the universe. Detection methods include not only wobble of a star, but light blocking of the planet as it passes in front of the star (including the detection of atmospheres around planets). Amazing stuff. Lots of discussion of the Mars Rover accomplishments. The mission has been essentially about geology to date and what can be determined from that alone is fascinating. The next Mars mission (Curiosity Rover) will be in the news starting in August, 2012 ( and it will have the ability to detect the building blocks of life. If life is confirmed on another planet and there are uncounted planets in the universe, one has to think that SETI ( is going to find something eventually.

The Google Tech Talk:

The Second Copernican Revolution: Our Changing View of Our Place in the Universe

Sunday, March 04, 2012

Erlang Presentation

Let It Crash ... Except When You Shouldn't

Erlang is a language built around fault tolerance concepts.

Chaos Monkey -- (NetFlix) taking down portions of a system deliberately to test fault tolerance and degraded, but functional performance. Reminds me of work I did at CERL (PLATO) for the zdegraded system variable.

Ran across an interesting blog posting (NetFlix again) about Lessons Learned Using Amazon Web Services.

Friday, March 02, 2012

Agile Retrospectives (Interview)

Aino Corry on Agile Retrospectives

Thoughtful advice and observations regarding retrospectives. Some good management tips with people in general.

Monday, February 20, 2012

Single Page Apps

Single Page Apps and the Future of History

Survey of single page app patterns including hash technique in URL, HTML5 History API, Moustache, HiJax, etc. Not really focused on exploring HTML5 capabilities.

Monday, February 13, 2012

Mobile HTML5 High Energy Presentation

Mobile HTML5 (Scott Davis)

Want to get excited about what HTML5 lets you do easily to adapt to mobile environments....

Input tags that desktop browsers don't recognize (e.g. tel, email, etc.) revert to text so you can write for mobile while not hurting desktop.

Touch is coming to desktop/laptops soon.

Responsive Web Design (book reference)

Friday, February 10, 2012

MySQL Project Lessons Learned Presentation

Something different. A story about lessons learned....

Riak on Drugs (MySQL Dev Project Lessons Learned)

Talks about experience implementing a 5M user healthcare system for Denmark using Riak. Running MySQL and Riak in parallel. Problem with TCP packet corruption not being detected by checksum (replaced network driver). Delta changes using gzip capability to use a dictionary and referencing previous version as dictionary -- clever idea. Erlang used in solution. Good deal of discussion about the system architecture for handling write conflicts.

Tuesday, February 07, 2012

Lean Product Development

This is a jewel in the rough of a presentation with a bunch of good ideas to explore further including:

Cumulative Flow Diagram
WIP Limits
Operating Systems Queuing Theory Applied to Software Projects
Black–Scholes Model

Understanding the Magic of Lean Product Development (Don Reinertsen)

Saturday, January 21, 2012

HTML5 and the Dawn of Rich Mobile Web Apps

HTML5 and the Dawn of Rich Mobile Web Applications (James Pearce)

A good overview and evangelism for what HTML5 can do in the mobile app space.

Wednesday, January 18, 2012

Kanban Fishbowl Session

Kanban Fishbowl (Q & A) Session (David J. Anderson)

Discusses a variety of topics related to Kanban including organization support by senior management, how Kanban relates to Scrum.

Saturday, January 14, 2012

Predictability and Measurement with Kanban

A low energy speaker, but clearly knows his stuff with managing large software projects.

Predictability and Measurement with Kanban (David J. Anderson)

I thought his observation at the end during the Q & A session about how variability makes predicting small project schedules tough. Example of 50% of Scrum projects missing Sprint feature targets. Also the example of estimates where the high percentage of dark matter (unpredictable issues) introduced problems with trust because padding to account for reality was too large compared to the known estimate. How do you say something will take 9 months when you can only document 3 months worth of tasks.

His comments earlier in the presentation about the importance of rhythm and predictability with end users was right on in my experience. And his point that you build credibility for those times when you miss a deadline is also invaluable to understand.

Tuesday, January 03, 2012

Software Business Entrepreneur Advice (Presentation)

Good overview of dos and don'ts of software business startups by one of the founders of SpringSource.

Things I Wish I'd Known
Rod Johnson

HTML5 Angry Birds (Video Presentation)

HTML5 Angry Birds

Focused on desktop and not mobile. Nice low key presentation on the issues facing HTML5 game developers including 60 fps performance considerations such as garbage collection, splitting rendering and game physics logic.

Monday, January 02, 2012

Managing a High Volume Inbox

Like others, I wrestle with a large volume of email, especially at work. I've tried a couple of different systems, but this is the best I've found and recommend checking out the video at YouTube:

Inbox Zero (Merlin Mann)

The basic idea is that you process your emails to reduce your inbox to zero. Much less filing of emails and when you do, into just a few categories (in my case: trash, archive, defer, follow up).