<?xml version="1.0" encoding="utf-8"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="en">
<title>The Bolt</title>
<link rel="alternate" type="text/html" href="http://blogs.usask.ca/the_bolt/" />
<modified>2013-03-01T07:53:29Z</modified>
<tagline>Random bits from past and present</tagline>
<id>tag:blogs.usask.ca,2013:/the_bolt//75</id>
<generator url="http://www.movabletype.org/" version="3.21">Movable Type</generator>
<copyright>Copyright (c) 2013, tat380</copyright>
<entry>
<title>Before Texting There Was Mainframe Chat</title>
<link rel="alternate" type="text/html" href="http://blogs.usask.ca/the_bolt/archive/2013/02/before_texting_chat.html" />
<modified>2013-03-01T07:53:29Z</modified>
<issued>2013-03-01T04:44:50Z</issued>
<id>tag:blogs.usask.ca,2013:/the_bolt//75.27203</id>
<created>2013-03-01T04:44:50Z</created>
<summary type="text/plain">Looking back at the evolution of chat... before everyone had cell phones and the ability to chat in text message to almost anyone else, there was &quot;the mainframe&quot;....</summary>
<author>
<name>tat380</name>

<email>todd.trann@usask.ca</email>
</author>
<dc:subject>Nostalgia</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blogs.usask.ca/the_bolt/">
<![CDATA[<p><img alt="talk.jpg" src="http://blogs.usask.ca/the_bolt/images/talk-thumb.jpg" width="88" height="130" align="right" hspace="10" />Looking back at the evolution of chat... before everyone had cell phones and the ability to chat in text message to almost anyone else, there was "the mainframe".</p>]]>
<![CDATA[<p>The fall of 1988 I was a university undergrad in Engineering. Back then the only people on campus who got email accounts were either employees, computer science students or engineering students.</p>

<p>The email accounts were on the mainframe. You used a green-on-black VT-220 dumb terminal in a computer lab to get access to the mainframe, and then you launched the text based mail program. Getting email to each other within the university wasn't bad, but email routing to someone in another university was painful.</p>

<p>Some of us enterprising undergrads discovered that the mail program wasn't the only thing running on the mainframe. We tried ALL of the programs just to see what they would do. One of them we tried was called "talk", and it split the screen into an upper and lower half, allowing you to type on one half while someone else who was logged into the mainframe could type on the other half. Great fun.</p>

<p>Then I discovered that the mainframe had no privacy, and you could see a complete list of everyone who was logged in - including the employee accounts (I didn't share this discovery). So I started trying to "talk" with random people, many of them employees, and some of them took me up on it. I had some interesting conversations with people who were usually too enthralled with the technology to be mad at me for interrupting them.</p>

<p>To this day, one of the employees that I chatted with in 1988 is still a friend, and we'll be going for lunch shortly.</p>]]>
</content>
</entry>
<entry>
<title>Being An Ass Behind National TV</title>
<link rel="alternate" type="text/html" href="http://blogs.usask.ca/the_bolt/archive/2013/01/being_an_ass_behind_national_tv.html" />
<modified>2013-01-06T23:11:20Z</modified>
<issued>2013-01-04T06:01:08Z</issued>
<id>tag:blogs.usask.ca,2013:/the_bolt//75.26941</id>
<created>2013-01-04T06:01:08Z</created>
<summary type="text/plain">I was on national television once in my life so far. To everyone who saw the program when it aired I was professional and intelligent, but behind the scenes I was an ass....</summary>
<author>
<name>tat380</name>

<email>todd.trann@usask.ca</email>
</author>
<dc:subject>Life Lessons</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blogs.usask.ca/the_bolt/">
<![CDATA[<p><img alt="On TV" src="http://blogs.usask.ca/the_bolt/images/on_tv.jpg" width="100" height="100" hspace="5" align="right" />I was on national television once in my life so far.  To everyone who saw the program when it aired I was professional and intelligent, but behind the scenes I was an ass.</p>]]>
<![CDATA[<p>I was in my senior year of high school from 1987 - 1988, and sometime in the winter of that year the principal of the school called me into his office. I wasn't worried because I got along great with him, but I didn't know what was going on.  He asked me if I was interested in being on TV.</p>

<p>"What? On TV? Why?" was about all I could blurt out.</p>

<p>"CBC wants to run a piece on student entrepreneurs."</p>

<p>"But I don't own a business."</p>

<p>"I thought that you fixed people's electronics and charged them money for that?"</p>

<p>"Well, yes..." </p>

<p>At this point I was confused how he knew that, but I guess word travels around a small town.  It was true I did install and repair electronics of all kinds, mostly car stereos for friends and their parents - but I wasn't quite getting the connection to "student entrepreneur".</p>

<p>The principal continued, "you don't need a business license or business name to be an entrepreneur.  The fact that you're providing a service and charging people for that service is enough. That's what being an entrepreneur is all about.  So do you want to be on TV or not?"</p>

<p>How could I resist?  I agreed to participate.</p>

<p>The week after, I sat down in an empty office with two people from CBC.  One of them was the interviewer and the other was the camera man.  The program was "CBC Venture", and the interviewer explained again what the segment was going to be about and the angle that they were looking for for this particular story.  Then they started rolling the camera and the interview started.</p>

<p>The interview went quite well even though I was pretty nervous.  I answered questions like "How did you get started?" and "Do you advertise, or how do you find customers?"  Fairly routine for such a story.</p>

<p>After I answered all of the questions I thought we were done and I would be excused, but I was wrong.  The camera man, who was focused on my face throughout the whole interview up until now, moved so that he stood behind me and the camera was pointed at the interviewer.  I was confused, so the interviewer explained that in single-camera shoots they needed to go through the interview script twice so that they had both camera angles.  The interviewer then proceeded by asking me the same questions that he had already asked, in the same order.</p>

<p>"Do I need to answer the questions all over again?" I asked.</p>

<p>"No, just start talking so that the camera can pick up your jaw moving.  It doesn't matter what you say."</p>

<p>"Really?" I replied, slightly shocked, "anything at all?"</p>

<p>"Yes.  OK let's start again.  Can you tell me about your business?" he asked, looking at me and waiting for a reply.</p>

<p>Right then I turned into an ass.  I should have just started to answer the question, or at least fill the space with idle chatter.  Instead, the rest of the interview went like this:</p>

<p>Interviewer: (question)</p>

<p>Me: "Your tie is horrible. Did you dress yourself this morning, or did your Mom have to do that?"</p>

<p>Interviewer: (question)</p>

<p>Me: "What if I farted right now? I guess you wouldn't have to edit that out, but would the smell bug you? Do you think your expression would change?"</p>

<p>Interviewer: (question)</p>

<p>Me: "I guess I shouldn't say that I found a pound of cocaine in someone's trunk while installing a stereo, should I?"</p>

<p>And so on.  By the end of the second round of interview questions from camera angle two, the interviewer was very angry.  He was pissed. They shut off the camera and he dismissed me with a simple, "please leave now."</p>

<p>The story did air on national television, and many of my friends and family saw the segment where I was featured.  My grandparents called me up to tell me how proud they were of me.  But inside I wasn't feeling good at all.  The fun had died after I walked away from the interview and all I felt was ashamed at how unprofessional and immature I acted.  </p>

<p>I never did tell anyone the story behind the story, but I did learn a lesson on acting courteous when the other person is trying to do their job.</p>]]>
</content>
</entry>
<entry>
<title>Death Of The Small Town Theatre</title>
<link rel="alternate" type="text/html" href="http://blogs.usask.ca/the_bolt/archive/2012/09/the_st_brieux_theatre.html" />
<modified>2012-10-02T04:42:39Z</modified>
<issued>2012-10-01T02:08:41Z</issued>
<id>tag:blogs.usask.ca,2012:/the_bolt//75.26584</id>
<created>2012-10-01T02:08:41Z</created>
<summary type="text/plain">In our 2012 camping plans, we included a new camping destination: St. Brieux Regional Park. The camping trip ended up being great, however, something else in this small town attracted my attention: the movie theatre....</summary>
<author>
<name>tat380</name>

<email>todd.trann@usask.ca</email>
</author>
<dc:subject>Nostalgia</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blogs.usask.ca/the_bolt/">
<![CDATA[<p><img alt="st_brieux_theatre_1.jpg" src="http://blogs.usask.ca/the_bolt/images/st_brieux_theatre_1-thumb.jpg" width="120" height="90" hspace="5" align="right"/>In our 2012 camping plans, we included a new camping destination: St. Brieux Regional Park. The camping trip ended up being great, however, something else in this small town attracted my attention: the movie theatre.<br />
</p>]]>
<![CDATA[<p>It was one of those overcast "it's going to rain any time now" days that just aren't wonderful for camping and our two daughters were looking for something interesting to do.  On our previous trip into the small town of St. Brieux for stocking up on camping supplies, I had noticed a movie theatre.</p>

<p><a target="_blank" href="http://blogs.usask.ca/the_bolt/images/st_brieux_theatre_1.jpg"><img alt="st_brieux_theatre_1.jpg" src="http://blogs.usask.ca/the_bolt/images/st_brieux_theatre_1.jpg" width="360" height="180" /></a><br/><small>Click to enlarge</small></p>

<p>We decided to head into town and see what was playing.  Fortunately it was <u>Madagascar 3</u> and both kids said they wanted to see it, so we ventured in.  I paid for their tickets and snacks and sent them on to their seats, and I was going to leave and pick them up later, but I ended up just standing in the lobby, gazing around like an awestruck idiot.  Although the place looked to be well run and in decent shape, it was just old.  It looked like I was on the inside of a theatre-themed museum.</p>

<p>I finally glanced over and standing in the doorway off to the side of the lobby was a man, watching me as I took in the whole atmosphere of this tiny, old theatre.</p>

<p>"Hello!" I said with a cheery smile, "this place sure looks unique."</p>

<p>"Yeah," the man replied, "it is that."</p>

<p>"Do you work here?"</p>

<p>"Yep.  I'm the projectionist."</p>

<p>"Oh really?  Is the projector as old as the rest of this place?" I asked with honest curiosity.</p>

<p>"Yep."</p>

<p>After a few moments of hesitation and small talk I finally just blurted out: "Can I see it?  The projector, can I see what it looks like?"</p>

<p>"Well sure!"</p>

<p>He grinned and turned while gesturing me forward through the door, "follow me.  Just watch your step!"</p>

<p>I soon found out why the warning was needed, as we ascended a ladder and climbed to the second floor.  Except it wasn't really a full floor, it was more like a loft.  As I climbed I noticed that the air was getting substantially warmer.  </p>

<p>I introduced myself and my tour guide did the same; I learned that his name was Al.  This is Al:</p>

<p><a target="_blank" href="http://blogs.usask.ca/the_bolt/images/st_brieux_theatre_2.jpg"><img alt="st_brieux_theatre_2.jpg" src="http://blogs.usask.ca/the_bolt/images/st_brieux_theatre_2.jpg" width="360" height="480" /></a><br/><small>Click to enlarge</small></p>

<p>He explained that there were two projectors, and the light for each projector was provided by a welding rod. Yes, the same bright light from a welding arc that you aren't supposed to look into.  These interesting pieces of antique technology were labeled "Peerless Magnarc":</p>

<p><a target="_blank" href="http://blogs.usask.ca/the_bolt/images/st_brieux_theatre_3.jpg"><img alt="st_brieux_theatre_3.jpg" src="http://blogs.usask.ca/the_bolt/images/st_brieux_theatre_3.jpg" width="480" height="360" /></a><br/><small>Click to enlarge</small></p>

<p>And here is a look inside of one of them, showing the film already loaded:</p>

<p><a target="_blank" href="http://blogs.usask.ca/the_bolt/images/st_brieux_theatre_4.jpg"><img alt="st_brieux_theatre_4.jpg" src="http://blogs.usask.ca/the_bolt/images/st_brieux_theatre_4.jpg" width="480" height="360" /></a><br/><small>Click to enlarge</small></p>

<p>And another view, looking back into the rod and the focusing mirror:</p>

<p><a target="_blank" href="http://blogs.usask.ca/the_bolt/images/st_brieux_theatre_5.jpg"><img alt="st_brieux_theatre_5.jpg" src="http://blogs.usask.ca/the_bolt/images/st_brieux_theatre_5.jpg" width="480" height="360" /></a><br/><small>Click to enlarge</small></p>

<p>I was just in awe that this was still how movies were shown.</p>

<p>"Actually, most theatres don't use film any more.  Most have switched to digital.  We're one of the last few, and this year (2012) is the last year we will be able to get new releases on film."</p>

<p>"Why is that?"</p>

<p>"The movie distribution companies are switching to digital.  The new movies just won't be available on film any more."</p>

<p>After looking at the bulky cases, I could understand why:</p>

<p><a target="_blank" href="http://blogs.usask.ca/the_bolt/images/st_brieux_theatre_6.jpg"><img alt="st_brieux_theatre_6.jpg" src="http://blogs.usask.ca/the_bolt/images/st_brieux_theatre_6.jpg" width="480" height="360" /></a><br/><small>Click to enlarge</small></p>

<p>Al said that the movie my kids were about to watch, Madagascar 3, was shipped in <b>five (5) containers</b>, and when he received it it needed to be repaired.  It wasn't spliced properly, and Al had ended up fixing it and re-splicing it.  Fun stuff.  (Anecdotally, my kids did mention that the audio was out of sync for a little while in the movie. I laughed, knowing the cause.)</p>

<p>So I asked, "Isn't that good? Switching to digital?"</p>

<p>"No, it's too expensive; we can't afford to switch.  This theatre is run by volunteers.  Look at it - it's just an old quonset with a wooden front!  The seats are old, the concession is small, and we don't have a huge population to draw from."</p>

<p>"So what will happen?"</p>

<p>"I don't know.  Maybe we can get by on showing re-runs.  But we won't be getting any new releases on film."</p>

<p>I thanked Al for the enlightening tour of the St. Brieux Midway Theatre projector room and left him to start the show.  As I got in my truck and drove away, I wondered about the future of this and many other small town theatres. I suspected I was witnessing the death of a bit of small town culture.</p>]]>
</content>
</entry>
<entry>
<title>Group Chat, the Mobile Motivator</title>
<link rel="alternate" type="text/html" href="http://blogs.usask.ca/the_bolt/archive/2012/06/group_chat_mobile_motivator.html" />
<modified>2012-06-19T14:48:24Z</modified>
<issued>2012-06-19T06:20:36Z</issued>
<id>tag:blogs.usask.ca,2012:/the_bolt//75.26078</id>
<created>2012-06-19T06:20:36Z</created>
<summary type="text/plain">It&apos;s interesting to watch the tides of public opinion around mobile devices ebb and flow. What has Apple done right, was has RIM done wrong, what is Google going to do with Android, and - the great unknown at this...</summary>
<author>
<name>tat380</name>

<email>todd.trann@usask.ca</email>
</author>
<dc:subject>Technology</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blogs.usask.ca/the_bolt/">
<![CDATA[<p><img alt="group_chat.png" src="http://blogs.usask.ca/the_bolt/images/group_chat-thumb.png" width="110" height="110" align="right" hspace="5"/>It's interesting to watch the tides of public opinion around mobile devices ebb and flow.  What has Apple done right, was has RIM done wrong, what is Google going to do with Android, and - the great unknown at this point - where does Windows Phone fit in?  I don't have any answers, just some observations...</p>]]>
<![CDATA[<p>I have two young daughters, not quite yet teenagers, and they both own iPods (purchased themselves by saving up).  I asked my youngest daughter how many of her peers own an iPod?  About 75%.  That's a pretty huge number, and these youngsters are growing up knowing only iPods.  iPods replace their Nintendo DS and after that they are downloading free apps like crazy, instead of heading to Best Buy and laying down $15 each for games that they need to haul around in a separate case.</p>

<p>Games, however, are not the biggest reason my daughters love their iPods. To them, staying in touch with their friends is crucial, and they use iMessage exclusively.  Since none of their friends own anything other than iPods, messaging (they call it "texting" even though it isn't SMS) between friends is uncomplicated; there is no platform fragmentation.  Group messaging is very easy within iMessage. And yes, they can and do keep in touch with Mom and Dad through iMessage as well.</p>

<p>Video chat (FaceTime) has replaced picking up the phone for my oldest daughter and her friends.  This is kind of nice for us parents, too - it means that the kids aren't tying up the phone line.  I remember my Dad chastising me for this when I was their age.  Video chat with iMessage is also so easy to use that even Grandma can use it without a problem.  And last night, my daughter and her project partner were collaborating on their homework over video chat.  What a great thing.</p>

<p><img alt="texting.jpg" src="http://blogs.usask.ca/the_bolt/images/texting-thumb.jpg" width="220" height="146" hspace="8" align="left"/>I used to use a Blackberry curve, and I would use BBM to chat with my sister.  What a royal pain it was to set up with the exchange of PINs and such.  However, one day last year I wasn't able to reach her on BBM so I sent her a text, and she replied, "oh sorry, I switched to iPhone!"  So I called her and talked about it, and she said much the same peer pressure had happened to her (in her late 30s) as had happened to these elementary school kids: most of her friends had switched to iPhones and iMessage, so when her contract came due she switched. </p>

<p>If Microsoft's acquisition of Skype means that they will be bringing an easy-to-use messaging and video chat application to Windows Phone, I think they will be in great shape to take over a some portion of market share.  Once a few people in any social circle get onto Windows Phone then they can exert that pressure on their friends to switch.  And if the Windows Phone app does SMS as well as non-SMS messaging from within the same app, making it painless and seamless like iMessage does, then the switchover is relatively easy.</p>

<p>Perhaps some people will resist the urge to stay tied to platform-specific messaging and switch to <a href="http://www.textplus.com/" target="_blank">Text Plus</a>, <a href="http://kik.com/" target="_blank">Kik</a> or <a href="http://www.whatsapp.com/" target="_blank">WhatsApp</a>.  I don't see many taking the multi-platform route, though.  Back when I was using my Blackberry I was running a multi-protocol chat app called Trillian.  I used it to chat on ICQ, MSN and Jabber; I was able to chat with any and all of my friends, regardless of what device they were using.   However - and this is a HUGE however - I couldn't do any group chat between protocols.  So then I tried to get my friends to switch to Trillian, but none of them would.  Getting people to learn to use a new chat app was a pain they just didn't feel like enduring.</p>

<p>Regardless, these teens and younger don't actually have a platform issue, since they're all already on iPods.  The real test will come later when they start to have their own cell phones: will they all choose iPhone?  If not, how will group chat be handled?  There is a possibility that some closed social circles will agree and migrate to one of the multi-platform apps, however I think it's more likely that they would as a group simply all migrate to the same phone type instead - one that delivered on easy to use group chat and video chat.  Windows Phone could be ready and waiting for them.</p>

<p>Fancy features and camera specs may lure some people to new phones, but I think that group chat is a very strong social motivator, and will continue to coalesce groups of people onto specific platforms much more strongly than processor speeds or camera megapixels ever could.  The possible side-effect of an awesome Facebook mobile presence could upset this, but that's a whole new discussion.</p>]]>
</content>
</entry>
<entry>
<title>Mobile Social: Practice What You Preach</title>
<link rel="alternate" type="text/html" href="http://blogs.usask.ca/the_bolt/archive/2012/06/mobile_social_practice_what_you_preach.html" />
<modified>2012-06-15T14:07:41Z</modified>
<issued>2012-06-15T04:57:02Z</issued>
<id>tag:blogs.usask.ca,2012:/the_bolt//75.26047</id>
<created>2012-06-15T04:57:02Z</created>
<summary type="text/plain">Today I listened while David O&apos;Neill from Viafo talked to a group of us about social sharing in mobile apps. He made some great points, and I will be able to apply at least one of his ideas immediately. But...</summary>
<author>
<name>tat380</name>

<email>todd.trann@usask.ca</email>
</author>
<dc:subject>Technology</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blogs.usask.ca/the_bolt/">
<![CDATA[<p><img alt="share.jpg" src="http://blogs.usask.ca/the_bolt/images/share-thumb.jpg" width="120" height="90" align="right" hspace="5"/>Today I listened while David O'Neill from Viafo talked to a group of us about social sharing in mobile apps. He made some great points, and I will be able to apply at least one of his ideas immediately.  But the session wasn't completely one-sided, I think David also has some homework to do.</p>]]>
<![CDATA[<p>I was at the second of two conferences for me this week: MoSo (the Mobile Social conference).  While I'm attending sessions I try to concentrate on the speaker, listen and truly understand their points.  Today's speaker, David, made excellent points about how sharing should be done from within mobile apps:</p>

<ul><li>allow users to share to as many services as you can support
<li>however, only let them share to the services for which this content makes sense
<li>allow them to personalize the message
<li>share compelling content, not just "hey I clicked share from this app!"
<li>you should know what content your users are sharing (analytics)
<li>build sharing in from the start, not as an afterthought
</ul>

<p>These are all great points, and he drove the message home with a good anecdote on an app that Honda had made for one of their vehicles.  David also said that users want to share, and if you aren't allowing them to share from within the app, you're missing out on the cheapest and best marketing available today.</p>

<p>As David was talking, I was wondering of Viafo practiced what they preached.  Did they have an engaging mobile presence?  Were they allowing me to share their content with other developers that I know?</p>

<p>I searched and found the twitter account <a href="http://twitter.com/viafo" target="_blank">@viafo</a> which looked pretty official.  Except the last tweet from this account was May 30, 2012 (44 days previous!):</p>

<p><img alt="" src="/the_bolt/images/viafo_twitter.png" width="527" height="81" border="1"/></p>

<p>I also checked out the company web site, and there was no way for me to share the page instantly.  How strange.</p>

<p>So there I was, listening to David tell us that we needed to let our users share content or nobody was going to find our apps.  I waited patiently, and then at the end of his talk I asked about Viafo's mobile strategy - why was their Twitter account so out of use?</p>

<p>"Oh.  Well, that twitter account isn't really used," he explained.</p>

<p>"Why? It looks like your company account to me," I retorted.</p>

<p>"Well I guess so, but we just use it for testing," was his answer.</p>

<p>Really?  That's it?  Well dear Viafo, you are missing the boat.  You need to start practicing what you preach.  Don't forget that mobile developers are people, too - we like to share things with our friends as much as anyone, but it just so happens that some of us share geeky things.  Developer type things.  Things like "hey, I found this great service for building social sharing into mobile apps!"</p>

<p>Except I can't.  I can't share this with my developer friends because your twitter presence is "just for testing", your Facebook page hasn't been updated in just as long, and your web site is anything but sexy.  Even the developer documentation is out of date and unpolished.</p>

<p>This is not at all a criticism of Viafo's technology - it DOES look very cool and useful.  I know that David is telling the truth that supporting a matrix of social sites across a few different mobile development platforms is painful because I'm already feeling that pain.  If Viafo has the answer to that then I do believe that they're positioned to expand and profit greatly in the marketplace.</p>

<p>But in order to do that, they're going to have to start practicing what they preach.</p>

<p>If you want to listen to David talk about the problem and their solution, please see <a href="http://www.mobileindustryreview.com/2011/06/uplinq-david-oneill-of-viafo-and-the-interactivity-of-apps.html">this interview on Mobile Industry Review</a>.</p>]]>
</content>
</entry>
<entry>
<title>Mobile Dev From An Era Past</title>
<link rel="alternate" type="text/html" href="http://blogs.usask.ca/the_bolt/archive/2012/06/mobile_dev_past_era.html" />
<modified>2012-06-12T18:39:31Z</modified>
<issued>2012-06-12T06:22:05Z</issued>
<id>tag:blogs.usask.ca,2012:/the_bolt//75.26030</id>
<created>2012-06-12T06:22:05Z</created>
<summary type="text/plain">This past weekend I had the good fortune to talk with another mobile developer - but not a developer for iOS or Android, but rather from a mobile era already gone by....</summary>
<author>
<name>tat380</name>

<email>todd.trann@usask.ca</email>
</author>
<dc:subject>Technology</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blogs.usask.ca/the_bolt/">
<![CDATA[<p><img alt="bittysoft_ss1.png" src="http://blogs.usask.ca/the_bolt/images/bittysoft_ss1-thumb.png" width="120" height="108" align="right" hspace="5"/>This past weekend I had the good fortune to talk with another mobile developer - but not a developer for iOS or Android, but rather from a mobile era already gone by.</p>]]>
<![CDATA[<p>I was sitting and talking with Josh because we're both involved in enterprise mobile development.  As we were relaxing and enjoying our coffee, I asked if he was aware that I made mobile apps for consumers in addition to enterprise mobile apps - he wasn't.  So I showed him <a href="http://itunes.apple.com/us/app/wizards-orb/id404085413?mt=8" target="_blank">Wizard's Orb</a> and he had fun walking through the first few levels.  Then he mentioned that he wanted to get back into consumer apps again.</p>

<p>"Oh?" I asked "What do you mean 'again' - have you made some apps already?"</p>

<p>"Yes, but not for iPhones. My apps were made before we were calling them 'apps', they were still 'programs' back then.  Did you ever do any development for the Palm OS?"</p>

<p>I thought for a second and then replied, "yes, actually I have.  The program that I made for Palm OS was a two-way calendar sync connector; it kept the calendar on your Palm OS device in sync with your calendar at work.  I sold a few copies of that program, but really the sales volumes were insubstantial."</p>

<p>"Well I made programs for Palm OS and Pocket PC.  Small games and novelty programs like 'spin the bottle'. It was great!"  Josh was beaming at this point in our trip down memory lane.  "I formed a company in 1999 and called it BittySoft - you know, because I was making itty bitty programs.  But I haven't made anything since about 2005."</p>

<p>So I brought up the web site <a target="_blank" href="http://bittysoft.com">bittysoft.com</a> on my iphone while he was talking, and I stared in wonder:</p>

<p><a href="http://blogs.usask.ca/the_bolt/images/bittysoft_ss1.png" target="_blank"><img alt="bittysoft_ss1.png" src="http://blogs.usask.ca/the_bolt/images/bittysoft_ss1-thumb.png" width="120" height="108" border="2" /></a><br/><small>Click the image for a larger screenshot</small></p>

<p>"Hey your site is still up!" I exclaimed.</p>

<p>"Oh yeah, I still get a few sales each month."</p>

<p>When I looked at one of the product pages, my jaw dropped a little:</p>

<p><img alt="bittysoft_ss2.png" src="http://blogs.usask.ca/the_bolt/images/bittysoft_ss2-thumb.png" width="500" height="277" border="1" /></p>

<p>"Wow, $15 for a mobile app... um, I mean program. What does it do?"</p>

<p>"Mobile Moods? It plays relaxing sounds, and you can set a timer so that you can fall asleep listening to those sounds."</p>

<p>I was still in awe, staring at the screen on my iPhone.  I didn't want to insult his work, but I told him that $15 seemed pretty steep by today's standards.  He laughed and agreed.</p>

<p>"However," he said, "mobile development was a LOT harder back then.  The vendors didn't supply us with slick drag-and-drop IDE's, their APIs would change and break things a lot, and they also didn't have an app store with huge market exposure.  The price was fair at the time."</p>

<p>I wondered what a "typical" current iOS developer's web site would look like a number of years from today.  If they didn't keep it current, the effect might be about the same as it has been to the BittySoft web site - stuck in time, and a glimpse into mobile development from an era already largely forgotten.<br />
</p>]]>
</content>
</entry>
<entry>
<title>The Indie Author Social Contract</title>
<link rel="alternate" type="text/html" href="http://blogs.usask.ca/the_bolt/archive/2012/06/indie_author_social_contract.html" />
<modified>2012-08-13T19:32:56Z</modified>
<issued>2012-06-09T06:45:23Z</issued>
<id>tag:blogs.usask.ca,2012:/the_bolt//75.26015</id>
<created>2012-06-09T06:45:23Z</created>
<summary type="text/plain">Growing up (yes, decades ago now) I knew some people who called themselves writers. I somehow did not connect those people with the mainstream published authors who wrote the books I was reading on a daily basis....</summary>
<author>
<name>tat380</name>

<email>todd.trann@usask.ca</email>
</author>
<dc:subject>Current Thoughts</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blogs.usask.ca/the_bolt/">
<![CDATA[<p><img alt="your_book.jpg" src="http://blogs.usask.ca/the_bolt/images/your_book-thumb.jpg" width="120" height="90" hspace="5" align="right"/>Growing up (yes, decades ago now) I knew some people who called themselves writers. I somehow did not connect those people with the mainstream published authors who wrote the books I was reading on a daily basis.<br />
</p>]]>
<![CDATA[<p>Back then, "writers" and "authors" were two different things to me.  Writers were quirky people in my school who wrote poetry (some of it didn't even rhyme!) and attended writing workshops and events.  Authors were people like Isaac Asimov, <a href="http://blogs.usask.ca/the_bolt/archive/2010/12/rediscovering_jack_chalker.html">Jack L. Chalker</a>, Piers Anthony, Stephen King and J.R.R. Tolkien.  Authors were people who wrote these fantastically famous novels.  Authors must have somehow magically been born with the novel writing talent, and everything they had ever written was always a best-seller!!</p>

<p>Of course this isn't true.  Every author is a writer, and every author had to start somewhere.  It's such an obvious truth to me now.  However, decades ago I was a literary zombie: I consumed whatever the marketing / publishing machine churned out, blissfully unaware that I was indeed missing a ton of other tables at this buffet.  Not to say that what I read was crap - much of it I did enjoy.  But there is no denying I was being force fed at times.</p>

<p>I want to believe that even in my youthful naivety I tried to branch out by <a href="http://blogs.usask.ca/the_bolt/archive/2010/01/skipping_a_grade.html">randomly roaming the library</a>.  This may have helped somewhat, but these were still mostly books put out by large publishing houses, not independent authors.  Only within the last year have I truly embraced the concept of actively seeking out indie authors in an effort to widen my literary exposure.</p>

<p>I remember reading something like "a writer's greatest problem is obscurity" from Cory Doctorow and it made a lot of sense.  The same is absolutely true for indie software developers.  With so many people writing (both books and software) the problem becomes "how does one stand out in the crowd?"</p>

<p>While on this quest I've also discovered that a lot of indie authors will give away copies of their books.  Of course they should, if you accept the obscurity problem posed above.  So I've gone from buying $15 best-selling paperback books to downloading free ebooks from indie authors.  </p>

<p>Personally, I see a problem here.  It's a social problem - an unspoken contract, if you will.  I could in fact keep on downloading free ebooks ad nauseum - and I'm quite sure some people do - but if I did, I would be selfishly ignoring the question "how do indie authors ever survive?"  People do need to make a living.</p>

<p>So I've decided that I can hold up my end of the bargain in three ways:</p>

<p><b>1)</b> For every free ebook that I download and <i>like</i>, I will leave a favorable review for it online and tweet a link to that review.</p>

<p><b>2)</b> For every free ebook that I download and <i>love</i>, I will leave a favorable review, tweet about it, AND I will find at least one other non-free ebook from the same author and buy it.</p>

<p><b>3)</b> For every free ebook that I download and <i>don't like</i>, I will simply delete the ebook and move on.</p>

<p>I think that actions #1 and #2 help the indie author out considerably with their fight against obscurity, which will hopefully lead to other people finding their book and potentially being converted into fans (and fans are paying customers!)  Of course action #2 also directly addresses the question of how indie authors end up making a living.  </p>

<p><a href="http://www.amazon.com/dp/B005PK42BS" target="_blank"><img alt="DWH-vs-grocery" src="http://blogs.usask.ca/the_bolt/images/DWH-vs-grocery_final-thumb.png" width="83" height="125" hspace="5" align="left" border="0"/></a>As a direct example of action #2, I stumbled upon <a href="http://www.amazon.com/dp/B005PK42BS" target="_blank">Dumb White Husband vs. The Grocery Store</a> by Benjamin Wallace when it was on sale for free. I loved it. If you search you'll find the review I left of it on Amazon. After I reviewed it I followed that up by buying <a href="http://www.amazon.com/dp/B004YX7MLO" target="_blank">Post-Apocalyptic Nomadic Warriors</a> I loved that too!  So I reviewed that and then followed up... well, you get the idea.  I have a few of his books now. </p>

<p>Action #3 acknowledges that I will inevitably find some works that simply don't appeal to my taste but which other people may still enjoy.  It's also not really worth my time to post a negative review - I get nothing out of it, and neither does the author.  If I truly wanted to vent my frustration I could simply contact the author directly and complain.  I can delete the free ebook quicker and easier.</p>

<p>So that's it: what I think my end of the social contract looks like with indie authors from whom I received a free book.  </p>

<p>If you've read this far and you're an indie author, feel free to connect with me on Twitter: <a href="https://twitter.com/toddtrann">follow me and then send me a link</a> to something you wrote that you think I may like.  If that feels too forward for you then just say hello.</p>

<p>If you've read this far and you're a fellow reader like me, I'm not trying to guilt you into anything, I'm just explaining what's going through my head.</p>

<p>Cheers!</p>]]>
</content>
</entry>
<entry>
<title>The eBook Companion Video</title>
<link rel="alternate" type="text/html" href="http://blogs.usask.ca/the_bolt/archive/2012/05/ebook_companion_video.html" />
<modified>2012-05-11T06:35:24Z</modified>
<issued>2012-05-11T05:58:00Z</issued>
<id>tag:blogs.usask.ca,2012:/the_bolt//75.25793</id>
<created>2012-05-11T05:58:00Z</created>
<summary type="text/plain">Remember my first eBook from yesterday? Of course you do. So it turns out that reaction to the eBook was overwhelmingly positive! One of my friends even suggested that I follow up with a video....</summary>
<author>
<name>tat380</name>

<email>todd.trann@usask.ca</email>
</author>
<dc:subject>Current Thoughts</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blogs.usask.ca/the_bolt/">
<![CDATA[<p><img alt="how_to_be_good" src="http://blogs.usask.ca/the_bolt/images/how_to_be_good_video-thumb.png" width="110" height="75" hspace="5" align="right"/>Remember <a href="http://blogs.usask.ca/the_bolt/archive/2012/05/my_first_ebook.html">my first eBook</a> from yesterday? Of course you do.  So it turns out that reaction to the eBook was overwhelmingly positive! One of my friends even suggested that I follow up with a video.</p>]]>
<![CDATA[<p>We both had a good laugh at that - certainly, given the content of the eBook, it was a lark to even have finished that much.  Then I thought about it some more.  Why not?  There is a TON of drivel being posted to the Internet each day, at least this was (decently) original and (moderately) funny.</p>

<p>So I did.</p>

<p>Below is the movie adaptation of the eBook "How To Be Good At (almost) Everything".</p>

<p>Enjoy!</p>

<p><iframe width="560" height="315" src="http://www.youtube.com/embed/mlFHraGZU0k" frameborder="0" allowfullscreen></iframe></p>]]>
</content>
</entry>
<entry>
<title>My First eBook</title>
<link rel="alternate" type="text/html" href="http://blogs.usask.ca/the_bolt/archive/2012/05/my_first_ebook.html" />
<modified>2012-05-09T05:57:26Z</modified>
<issued>2012-05-09T05:47:36Z</issued>
<id>tag:blogs.usask.ca,2012:/the_bolt//75.25775</id>
<created>2012-05-09T05:47:36Z</created>
<summary type="text/plain">Here it is! Free of charge, and free of DRM. Download and enjoy my first eBook: How To Be Good At (almost) Everything. Comments? :)...</summary>
<author>
<name>tat380</name>

<email>todd.trann@usask.ca</email>
</author>
<dc:subject>Current Thoughts</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blogs.usask.ca/the_bolt/">
<![CDATA[<p><img alt="ebook.jpg" src="http://blogs.usask.ca/the_bolt/images/ebook-thumb.jpg" width="100" height="100" align="right" hspace="5"/>Here it is! Free of charge, and free of DRM. Download and enjoy my first eBook:  <a href="http://blogs.usask.ca/the_bolt/archive/how_to_be_good.pdf">How To Be Good At (almost) Everything</a>. </p>

<p>Comments? :)</p>]]>

</content>
</entry>
<entry>
<title>Under The Bridge</title>
<link rel="alternate" type="text/html" href="http://blogs.usask.ca/the_bolt/archive/2012/04/under_the_bridge.html" />
<modified>2012-04-25T07:47:27Z</modified>
<issued>2012-04-25T07:14:25Z</issued>
<id>tag:blogs.usask.ca,2012:/the_bolt//75.25722</id>
<created>2012-04-25T07:14:25Z</created>
<summary type="text/plain">In the fall of 1991 I was living in Kelowna but I still had friends back in Vancouver, so I would make the four hour drive to Vancouver about once a month. Some times I would spend a day or...</summary>
<author>
<name>tat380</name>

<email>todd.trann@usask.ca</email>
</author>
<dc:subject>My Life is a Stereo</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blogs.usask.ca/the_bolt/">
<![CDATA[<p><img alt="vancouver_night.jpg" src="http://blogs.usask.ca/the_bolt/images/vancouver_night-thumb.jpg" width="125" height="83" align="right" hspace="5"/>In the fall of 1991 I was living in Kelowna but I still had friends back in Vancouver, so I would make the four hour drive to Vancouver about once a month.  Some times I would spend a day or an evening all by myself in the big city...</p>]]>
<![CDATA[<p>When the Red Hot Chili Peppers came out with "Under the Bridge", the timing was perfect.  The song personified a city and described the relationship between an individual and the city - I felt it.  I felt the connection to Vancouver as I was driving around, amazed at the sights and sounds.</p>

<div style="border:1px solid #FFA229; margin: 10px; padding: 5px; background:#FAF3A2">

<p>Sometimes I feel like I don't have a partner<br />
Sometimes I feel like my only friend<br />
Is the city I live in the city of angels<br />
Lonely as I am together we cry</p>

<p>I drive on her streets 'cause she's my companion<br />
I walk through her hills 'cause she knows who I am<br />
She sees my good deeds and she kisses me windy<br />
I never worry now that is a lie<br />
</div></p>

<p><img alt="lions_gate.jpg" src="http://blogs.usask.ca/the_bolt/images/lions_gate-thumb.jpg" width="250" height="187" align="left" hspace="5"/>I explored many areas of the city by myself.  I would drive into an industrial district and just wander around on foot (if you weren't causing damage, people would mostly just leave you alone).  I drove across the majestic Lion's Gate Bridge and found a shopping district full of quaint coffee shops and cottage industries.  I ventured to the Vancouver Planetarium and took in their awesome Pink Floyd laser show.  From night clubs in Kitsilano to fireworks displays being shot off ships in the harbour, I tried to explode my brain with new experiences - some of which were stupid and dangerous, but all of which were worth it.</p>

<p>Throughout all of this and more I was solitary, yet I felt a connection to the city that I really couldn't adequately describe in words.  Only when Under the Bridge was playing did I feel that someone else shared that experience with me.  If I close my eyes these days, I'm still driving around the streets of Vancouver with the Red Hot Chili Peppers cranked up...</p>

<p><iframe width="480" height="360" src="http://www.youtube.com/embed/lwlogyj7nFE" frameborder="0" allowfullscreen></iframe><br />
</p>]]>
</content>
</entry>
<entry>
<title>Titanium Tutorial 2j -  Database Sync With JSON</title>
<link rel="alternate" type="text/html" href="http://blogs.usask.ca/the_bolt/archive/2012/04/titanium_database_json_tutorial.html" />
<modified>2012-04-05T01:21:17Z</modified>
<issued>2012-04-04T06:01:20Z</issued>
<id>tag:blogs.usask.ca,2012:/the_bolt//75.25614</id>
<created>2012-04-04T06:01:20Z</created>
<summary type="text/plain">This is the second Titanium database tutorial, modified to use JSON. You may want to read the first Titanium database tutorial for reference first, however this tutorial is where you should start actually working with Titanium Studio....</summary>
<author>
<name>tat380</name>

<email>todd.trann@usask.ca</email>
</author>
<dc:subject>Technology</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blogs.usask.ca/the_bolt/">
<![CDATA[<p><img alt="tutorial2_pic3.png" src="http://blogs.usask.ca/the_bolt/images/tutorial2_pic3-thumb.png" width="50" height="93" hspace="5" align="right"/><p>This is the second Titanium database tutorial, modified to use JSON.  You may want to read the <a href="http://blogs.usask.ca/the_bolt/archive/2010/12/titanium_tutorial_database.html">first Titanium database tutorial</a> for reference first, however this tutorial is where you should start actually working with Titanium Studio.</p></p>]]>
<![CDATA[<p><br clear="all"/>The &quot;old&quot; first and second Titanium database tutorials may no longer work because they were based on the stand-alone Titanium compiler that existed before Titanium Studio.  Here is an update for tutorial 2 that we will call &quot;Tutorial 2j&quot; because it uses JSON instead of XML for the remote update.  In this tutorial we will pull JSON data from a remote web site and then update the local database with the contents of the JSON. </p>

<p>Why JSON? A few reasons:
<ul>
<li>It is more compact, so there will be less data that mobile users need to pull over potentially slow networks
<li>Titanium is built on Javascript, and JSON is natively part of that.  Because of this, the JSON routines are much faster than the XML routines.
<li>I found that the XML parser will run out of memory once the XML document gets large enough! Very bad, this could crash the app.
<li>And a non-technical reason: I find JSON easier and faster to read now that I am used to it
</ul>

<p>The remote JSON will look similar to this:
<pre><span style="font-size: 11px;color:#000066;line-height: 12px">
{
  "items": [
  {
    "id": "11",
    "catid": "2",
    "name": "Oval",
    "desc": "Squishing a circle turns it into an &lt;span style='color:green'&gt;oval&lt;/span&gt;."
  },
  {
    "id": "12",
    "catid": "3",
    "name": "Orange",
    "desc": "&lt;span style='color:orange'&gt;Orange&lt;/span&gt; you glad I didn't say banana"
  }
  ]
}
</span></pre>
<br/>By popular request I am including the PHP file that I used to generate this JSON on the server.  Please note that you do NOT need to install or run the PHP file for the purpose of this tutorial, it is just there so you can see what is happening on the server side.

<p>The assumption for this tutorial is that the database local to the device has been seeded from the master database used on the remote site.  Therefore, the primary keys and all data on the device would match exactly the master database at some point in time when the project is built.  All data modified after that time will show up in the JSON feed and be pulled down to the mobile device.

<p><br/><h3>Step 1: Download The Files</h3><br />
<p>You don't need to re-create the database from Tutorial 1, just download all of the  files for this project and the database will be included. <a href="/the_bolt/archive/tutorial2j.zip">here are the files that you will need</a> to download (right-click and save).  Please download the zip file and then unzip.  You should have a folder with contents like this:<br/><br />
<img src="/the_bolt/images/tutorial2j_1.png" width="398" height="153" border=0/></p>

<p><br/><h3>Step 2: Create a New Project</h3><br />
<p>Open Titanium Studio. Click on File &gt; Import:<br/><br />
<img src="/the_bolt/images/tutorial2j_2.png" width="325" height="113" border=0/><br />
<p>Choose &quot;Existing Folder as New Project&quot;:<br/><br />
<img src="/the_bolt/images/tutorial2j_3.png" width="246" height="161" border=0/><br />
<p>On the next page, make sure that <b>Titanium Mobile</b> is selected as primary:<br/><br />
<img src="/the_bolt/images/tutorial2j_4.png" width="542" height="300" border=0/><br />
<p>Once the import is done, the new project will show up in the Project Explorer:<br/><br />
<img src="/the_bolt/images/tutorial2j_5.png" width="243" height="217" border=0/></p>

<p><br/><h3>Step 3: Compile and Run the Application</h3><br />
Before you look at what the code is doing, let's see if it will run.  In Titanium Studio, with the new project highlighted, click the <b>Run</b> butten and select <b>iPhone Simulator</b>:<br/><br />
<img src="/the_bolt/images/tutorial2j_6.png" width="276" height="144" border=0/></p>

<p>Eventually the iPhone simulator will open and the application should run, resulting in this:<br/><br/><br />
<img src="/the_bolt/images/tutorial2_pic3.png" width="215" height="400" border=0/><br/><br/></p>

<p>Notice that there is a tab "Home".  This tab will display the item in the local database with the highest ID.  We will examine the code for this tab in the next step.  Click the Categories tab, then click Shapes.  The debug console within Titanium Studio should contain information similar to this:

<pre><span style="font-size: 11px;color:#000066;line-height: 12px">
[INFO] DB needs updating from remote
[INFO] Open: URL
[INFO] Updating database...
[INFO] Found 2 items to update
[INFO] Item [11] = Sphere
[INFO] Item [12] = Brown
[INFO] Done.
[INFO] Set lastUpdatedTS to 1294078155
[INFO] Found category: Colors [3]
[INFO] Found category: Food [1]
[INFO] Found category: Shapes [2]
[INFO] Found item: Triangles [6]
[INFO] -> Shapes <- clicked
[INFO] Found item: Circles [5]
[INFO] Found item: Sphere [11]
[INFO] Found item: Squares [4]
[INFO] Found item: Triangles [6]
[INFO] Application has exited from Simulator
</span></pre>

<p>If you compare the data to what we inserted when creating the database in Tutorial 1, you will notice a new item with ID #11 and another with ID #12. Let's see how those got there.

<p><br/><h3>Step 4: Examine the Code</h3></p>

<p><b>1. app.js</b><br/><br />
In Titanium Studio Project Explorer, open the Resources folder for this project, then double-click to open <b>app.js</b>.  There is a section of code at the top:<br/></p>

<pre><span style="font-size: 11px;color:#000066;line-height: 12px">
var lastUpdatedTS = Titanium.App.Properties.getInt('lastUpdatedTS');
if (lastUpdatedTS == null || lastUpdatedTS < 1291208400) {
    lastUpdatedTS = 1291208400;
    Ti.App.Properties.setInt('lastUpdatedTS', 1291208400 );
}
</span></pre>
The Titanium property <b>lastUpdatedTS</b> will contain a unix timestamp corresponding to when the local database was last updated.  The initial timestamp of 1291208400 is not a random number, it should correspond to the timestamp when the local database and master database were in sync and contained the exact same data.  There are many web sites that will convert dates and times into timestamps and vice-versa.  Just Google <a href="http://www.google.ca/search?q=unix+timestamp" target="_blank">unix timestamp</a> if you don't already have a favorite.<br/><br/>

<p><b>2. tab_home.js</b><br/><br />
Double-click to open <b>tab_home.js</b>. </p>

<p><i>(At this point I should mention: this is apparently bad coding style!  I've read that &quot;one javascript file per tab&quot; is inefficient, and others have already demonstrated better ways to code a Titanium app.  You should search for &quot;Titanium programming standards&quot; or something like that - others have already written about this better than I could have.  I did not refactor the code just for this tutorial.)</i>  </p>

<p>Almost all of the code in this tab is dedicated to database operations.  Scroll down around line 164 after all of the function definitions, to the following code which starts off the whole data update process:</p>

<pre><span style="font-size: 11px;color:#000066;line-height: 12px">
// see if database should be refreshed
if (checkNeedsUpdating(currentTS) 
    &amp;&amp; (Titanium.Network.networkType != Titanium.Network.NETWORK_NONE)) {
    busy = true;
    showModalWindow();
    updateDatabaseFromRemote(xhrURL,currentTS);
    setTimeout(checkBusy, 300);
}
</span></pre>

<p>Assuming we are updating the data, the modal window is drawn to prevent the user from interacting with the UI while the app is busy, and then the function <b>updateDatabaseFromRemote</b> is called:</p>

<pre><span style="font-size: 11px;color:#000066;line-height: 12px">
// open the client and get the data
var lastUpdatedTS = Titanium.App.Properties.getInt('lastUpdatedTS');
remoteURL += &quot;?since=&quot; + lastUpdatedTS;
remoteURL += &quot;&amp;auth=&quot; + xhrKey;
xhr.setTimeout(25000);
xhr.open('GET',remoteURL);
xhr.send(); 
</span></pre>

<p>The <b>auth</b> parameter contains the authorization key for this app.  The security model used here is trivial, and a real production app would use stronger security if you were concerned about your data being used by unauthorized applications.  However, the PHP file <b>update_json.php</b> that I provide for you to use will check the key - change it within the app and recompile if you want to see what happens when the wrong auth key is passed to the remote web site.

<p>The <b>since</b> parameter tells the remote database the timestamp of when our local device database was last updated.  The JSON feed should then appropriately contain only the records that have changed in the master database since that timestamp.  However for the purpose of this tutorial, the remote file will only update items with primary key 11 and 12.  (There are five different shapes coded into update_json.php, and five different colors).

<p>Due to the non-blocking nature of Titanium HTTPClient calls, the database operations are contained in the <b>onload</b> method of the HTTPClient that we created, so that the app waits until all of the JSON content is retrieved before acting on it.

<p>After parsing the JSON and making sure there are more than zero items to process, the application then inserts or updates the local database:	
<pre><span style="font-size: 11px;color:#000066;line-height: 12px">
var db = Titanium.Database.open('contentDB');
for (var c=0; c< jsonObject.items.length;c++) {
	var item       = jsonObject.items[c];
	var item_id    = item.id;
	var item_catid = item.catid;
	var item_name  = item.name;
	var item_desc  = item.desc;
	Ti.API.info(&quot;Item [&quot;+item_id+&quot;] = &quot;+item_name);
	db.execute('REPLACE INTO items (item_id,category_id,item_name,item_description) 
	    VALUES (?,?,?,?)',item_id,item_catid,item_name,item_desc);
}
db.close();
</span></pre>

<p>Since the database was just updated, we need to set The Titanium property <b>lastUpdatedTS</b> to reflect this:
<pre><span style="font-size: 11px;color:#000066;line-height: 12px">
Titanium.App.Properties.setInt('lastUpdatedTS',nowTS);
Ti.API.info("Set lastUpdatedTS to "+nowTS);
</span></pre>

<p>Finally, the modal window is closed and the UI control returned to the user.  At this point, the newly updated item should be displayed on the home tab of the app.  Close the simulator and then recompile in Titanium to re-open the app, and watch the home tab change content (and watch the console as the data is pulled from the remote site).

<p>If you're interested in seeing a real life example of this that you can download, check out <a href="http://bit.ly/cleanjokes" target="_blank">Just Clean Jokes</a>.  It uses ideas from these first two tutorials.

<p>To see all of the applications I have made with Titanium, please visit: <a target="_blank" href="http://www.prairiewest.net/applications.php">http://www.prairiewest.net/applications.php</a>.  If you download any of them, an iTunes app store review would be greatly appreciated.

<p>If you enjoyed this tutorial, or have any questions, please leave a comment or <a href="http://twitter.com/toddtrann" target="_blank">follow me on Twitter</a>.]]>
</content>
</entry>
<entry>
<title>Satisfaction is Not Guaranteed</title>
<link rel="alternate" type="text/html" href="http://blogs.usask.ca/the_bolt/archive/2012/02/satisfaction_is_not_guaranteed.html" />
<modified>2012-02-29T06:12:29Z</modified>
<issued>2012-02-29T05:50:12Z</issued>
<id>tag:blogs.usask.ca,2012:/the_bolt//75.25381</id>
<created>2012-02-29T05:50:12Z</created>
<summary type="text/plain">Kids are amazing, and their minds are ALWAYS going full speed ahead, aren&apos;t they?...</summary>
<author>
<name>tat380</name>

<email>todd.trann@usask.ca</email>
</author>
<dc:subject>Current Events</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blogs.usask.ca/the_bolt/">
<![CDATA[<p><img alt="satisfaction_not_guaranteed.gif" src="http://blogs.usask.ca/the_bolt/images/satisfaction_not_guaranteed-thumb.gif" width="110" height="104" hspace="5" align="right"/>Kids are amazing, and their minds are ALWAYS going full speed ahead, aren't they?<br />
</p>]]>
<![CDATA[<p>A few days ago we pulled into the Wal-Mart parking lot.  As we were sitting in the car preparing to run into the store, my oldest daughter read out loud: "Satisfaction Guaranteed."  A slight pause.  Then: "Hey Dad, that's false advertising!"</p>

<p>"What??  Why is that."</p>

<p>"Wal-Mart can't guarantee that you will be satisfied."</p>

<p>"Well they try - what that means is that if you aren't happy with whatever it is that you bought, then you can return the item and get your money back.  So either you are satisfied with your item, or you have your money back and are satisfied with that."</p>

<p>"But they are leaving out a third group of people."</p>

<p>"Who's that?"</p>

<p>"Well what if I really REALLY wanted something.  But then I bought it at Wal-Mart and it didn't work as advertised.  Now I'm stuck."</p>

<p>"Well then you can return it for a refund."</p>

<p>"But that doesn't help me.  I really want this thing, but I'm mad now because it doesn't work.  But if I take it back and get my money back, then I'm also not happy because then I don't have the thing.  I want it!  I don't want my money, I'd be happy to spend it on the thing, if only the darn thing would work!  See?  There is no way I could be satisfied."</p>

<p>"I guess you're right."</p>

<p>"So then that's false advertising, and Wal-Mart should take that sign down."</p>

<p>The mind of an 11 year old.</p>]]>
</content>
</entry>
<entry>
<title>Canada&apos;s Federal Debt 2012: Still Rising</title>
<link rel="alternate" type="text/html" href="http://blogs.usask.ca/the_bolt/archive/2012/02/federal_debt_continue_deficit.html" />
<modified>2012-02-21T20:29:14Z</modified>
<issued>2012-02-21T06:53:07Z</issued>
<id>tag:blogs.usask.ca,2012:/the_bolt//75.25372</id>
<created>2012-02-21T06:53:07Z</created>
<summary type="text/plain">Canada is going deeper into debt - federally, that is. This is the third fiscal year in a row where the Conservative Party of Canada have carried through on their plans for a non-balanced budget....</summary>
<author>
<name>tat380</name>

<email>todd.trann@usask.ca</email>
</author>
<dc:subject>Finance</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blogs.usask.ca/the_bolt/">
<![CDATA[<p><img alt="federal_surplus_defecit_2011" src="http://blogs.usask.ca/the_bolt/images/federal_surplus_defecit_2011_real-thumb.gif" width="120" height="77" align="right" hspace="5"/>Canada is going deeper into debt - federally, that is.  This is the third fiscal year in a row where the Conservative Party of Canada have carried through on their plans for a non-balanced budget.</p>]]>
<![CDATA[<p>It's likely no surprise that Canada isn't paying off its federal debt, and instead we continue to accumulate even more debt.  I say "no surprise" because everyday type of people that I talk to about finance all seem to have heard that so many countries in the world are either bankrupt, going bankrupt, or are otherwise "in bad financial shape".  However, even though most people seem to accept a deficit budget as normal, I still don't think it's warranted.  Since we already have $550 Billion of federal debt to pay off, we shouldn't be adding to it and I don't think that a balanced budget is too much to ask for.</p>

<p><img alt="federal_surplus_defecit_2011_real.gif" src="http://blogs.usask.ca/the_bolt/images/federal_surplus_defecit_2011_real.gif" width="576" height="373" /><br/><small>Amounts taken from <a href="http://epe.lac-bac.gc.ca/100/201/301/public_accounts_can/2011/49-eng.pdf" target="_blank">Public Accounts of Canada</a> and added to <a href="http://blogs.usask.ca/the_bolt/archive/2011/01/canadas_federal_deficit_deceit.html">last year's graph</a></small></p>

<p>Sadly, this ever-growing federal debt will make a growing portion of tax dollars from upcoming generations of middle class taxpayers go towards servicing the debt.  This past fiscal year $30.8 Billion was paid in public debt charges [source: <a href="http://epe.lac-bac.gc.ca/100/201/301/public_accounts_can/2011/50-eng.pdf" target="_blank">Details of Expenses and Revenues 2011</a>]  That's much more than the $19.9 Billion that was paid out for Employment Insurance benefits, and it's almost as much the $35.6 Billion that was paid out for Old Age Security benefits.</p>

<p>I don't know about most Canadians, but personally I'd rather that we were spending less of that $30.8 Billion on servicing the federal debt, and more of it on useful programs.<br />
</p>]]>
</content>
</entry>
<entry>
<title>Move Twitter Content Pane Left</title>
<link rel="alternate" type="text/html" href="http://blogs.usask.ca/the_bolt/archive/2012/02/move_twitter_content_left.html" />
<modified>2012-02-15T16:05:47Z</modified>
<issued>2012-02-13T15:37:11Z</issued>
<id>tag:blogs.usask.ca,2012:/the_bolt//75.25335</id>
<created>2012-02-13T15:37:11Z</created>
<summary type="text/plain">I have been using Twitter for a while, and each time they change their site design it takes a bit of time to get used to it again. However, their last change (which I only recently inherited) didn&apos;t sit well...</summary>
<author>
<name>tat380</name>

<email>todd.trann@usask.ca</email>
</author>
<dc:subject>Current Thoughts</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blogs.usask.ca/the_bolt/">
<![CDATA[<p><img alt="twitter_content_pane" src="http://blogs.usask.ca/the_bolt/images/twitter_content_pane.jpg" width="113" height="96" align="right" hspace="5" />I have been using Twitter for a while, and each time they change their site design it takes a bit of time to get used to it again.  However, their last change (which I only recently inherited) didn't sit well with me; I don't like the content pane on the right.  Here's a way to move it back to the left...</p>]]>
<![CDATA[<p>Note that this user script only works in Chrome.  I tried it in Firefox with Greasemonkey installed, but it didn't work and I didn't take any time to debug it since I use Chrome.  So, if you want to use this script, try it in Chrome.</p>

<h3>Installation</h3>

<p>Here is a link to the script:<br />
<a href="http://blogs.usask.ca/the_bolt/archive/twitleft.user.js"><img alt="twitleft32.gif" src="http://blogs.usask.ca/the_bolt/images/twitleft32.gif" width="16" height="16" /></a> <big><a href="http://blogs.usask.ca/the_bolt/archive/twitleft.user.js">twitleft.user.js</a></big></p>

<p>After you click the link, you will get a warning at the bottom of your browser, and you will need to click "continue".  Then you will get a second warning, saying that this script will be running when you are on twitter.com, you will need to click "install" here.  Finally, you will get one more notice saying that the script is installed.</p>

<p>If you want to disable or remove it in the future, just go to your extensions menu and find TwitLeft, and click remove.</p>]]>
</content>
</entry>
<entry>
<title>First Years in Residence</title>
<link rel="alternate" type="text/html" href="http://blogs.usask.ca/the_bolt/archive/2012/02/first_years_in_residence.html" />
<modified>2012-02-13T06:57:38Z</modified>
<issued>2012-02-13T05:45:00Z</issued>
<id>tag:blogs.usask.ca,2012:/the_bolt//75.8588</id>
<created>2012-02-13T05:45:00Z</created>
<summary type="text/plain">I spent the first two years of university living in residence. These were segregated dorms rooms, just large enough to hold a bed, desk, and dresser/closet. Living in residence was both a blessing and a curse......</summary>
<author>
<name>tat380</name>

<email>todd.trann@usask.ca</email>
</author>
<dc:subject>Nostalgia</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blogs.usask.ca/the_bolt/">
<![CDATA[<p><img alt="university residence" src="http://blogs.usask.ca/the_bolt/images/university_residence-thumb.jpg" width="120" height="84" align="right" hspace="5" />I spent the first two years of university living in residence.  These were segregated dorms rooms, just large enough to hold a bed, desk, and dresser/closet.  Living in residence was both a blessing and a curse...</p>]]>
<![CDATA[<p>Since I didn't live in the city where I went to university, my parents had a few choices on how to set me up for accommodations while I was attending university.  I say they had choices as since my first two years of university were paid in full by them I wasn't in much of a position to argue.  They settled on residence because it was close to all of my classes (and I hated getting up in the morning, so perhaps I might make it to my classes) and because it came with a meal plan (they were very concerned that I wouldn't have enough time to cook for myself).  Sounded good to me.</p>

<p>I didn't know what to expect at residence, since everything I had seen on TV and in movies was all about American fraternity houses where every weekend eventually ended up as a massive party that destroyed the whole place, police on the front lawn and all.  I was pretty sure that wasn't what awaited me.</p>

<p>My first year room was a double, and I ended up sharing it with a guy that I knew from my old high school.  We didn't ask to be placed together, the residence office did that on their own.  It worked out OK for me, but not so good for him: he was the kind of guy whose good grades came from hours of studying and hard work, while I was the kind of guy whose good grades came without too much effort. While he was trying to study each weekend, I was in and out, making plans and making noise.  </p>

<p>First year university was also when I started up <a href="http://blogs.usask.ca/the_bolt/archive/2010/02/from_desire_to_jealousy.html">my first serious relationship</a> - the kind of relationship that is guaranteed to distract one from studies.  At that time, I was also still working part time as a <a href="http://blogs.usask.ca/the_bolt/archive/2009/11/youre_in_my_heart.html">mobile disc jockey</a>, playing music almost every weekend. On top of my heavy course load, I was busy.</p>

<p>I'd like to say that I really tried to make a go of it in my first year, but my heart wasn't in it.  Since I was younger than most of the other first year students due to <a href="http://blogs.usask.ca/the_bolt/archive/2010/01/skipping_a_grade.html">skipping a grade</a>, the novelty of getting into "the university bar scene" while under-age was quite compelling.  I was also enrolled in Mechanical Engineering, which was the degree that I thought my parents wanted me to get.  If there's one thing that I know to be true now, it's that getting a university degree is something you have to want for yourself.  I ended up passing first year Engineering with an average of around 60%.  Coming from 85% in high school, this was a shock to my parents, but I explained it away by saying that everyone's grades dropped from high school to university.  Sadly, they trusted me on this.</p>

<p>In second year, I had my own single room.  It looked like this:<br />
<img alt="university residence" src="http://blogs.usask.ca/the_bolt/images/university_residence.jpg" width="500" height="350" border="2" vspace="5"/><br/><small><a href="http://blogs.usask.ca/the_bolt/images/university_residence.jpg" target="_blank">Larger version</a></small></p>

<p>What a mess.  The only thing that is in a nice, neat pile is the laundry that my Mom had done and folded for me the last time that I was home.  If I walked into one of my daughters' rooms and saw a mess like this today, I wouldn't be happy.  The guy in the picture isn't me, it's Vance.  Vance lived across the hall from me, and from time to time he would come over to use my computer.  We all usually left our rooms unlocked back then, so it wasn't uncommon for me to come back to my room to find someone using my computer for homework - not everyone had a computer in 1989.  I didn't mind, because while they were in my room they would usually also answer the phone for me and take messages (I didn't have an answering machine).</p>

<p>Of course I failed out after my second year of university - that was inevitable.  The Dean of Engineering wrote me a stern letter, and asked me to take some time off to re-evaluate my priorities in life.  I still have that letter.  When people ask me why I failed out, my usual reply was, "how was I supposed to study when there were girls walking by in the hall wearing sexy black lingerie?"  Although that story was true, I did see girls walk by in their underwear, they weren't the reason that I failed university.</p>

<p>When I returned to studies after a two-year "life break", I came back to the programs that I wanted to take (Electrical Engineering and Computer Science).  My parents also helped me buy a house, and I became a landlord by renting out the basement and a room upstairs.  I cooked all my own meals.  In the end, living in that house was less expensive and I was eating better (as far as quality of food), and there were almost zero distractions.  </p>

<p>I found that I actually *could* do homework and study in the right environment.  I ended up taking 13 (yes, thirteen) classes in one very busy term, but I worked my ass off and passed them all with good marks - while STILL running my own mobile DJ business!  At the end of my degrees in 1996 I had four employees working for me and I was also dating again.  It could all be done if I wanted it.</p>

<p>Residence is now just a place in my memory where I had some great times, met some awesome friends that I still have today, and also learned a lot about myself.  It just isn't the place where I studied.<br />
</p>]]>
</content>
</entry>

</feed>