<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The Worthwhile Blog &#187; Ian Wagner</title>
	<atom:link href="http://www.worthwhile.com/blog/author/iwagner/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.worthwhile.com/blog</link>
	<description>Increasing Your Internet Worth</description>
	<lastBuildDate>Tue, 31 Jan 2012 20:35:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Developing a Large-Scale iPhone App</title>
		<link>http://www.worthwhile.com/blog/developing-a-large-scale-iphone-app/</link>
		<comments>http://www.worthwhile.com/blog/developing-a-large-scale-iphone-app/#comments</comments>
		<pubDate>Thu, 16 Sep 2010 13:43:14 +0000</pubDate>
		<dc:creator>Ian Wagner</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[iPhone Apps]]></category>
		<category><![CDATA[mobile apps]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.worthwhile.com/blog/?p=5117</guid>
		<description><![CDATA[<img width="90" height="90" src="http://www.worthwhile.com/blog/wp-content/uploads/2010/09/ta5promo1thumb.png" class="attachment-post-thumbnail wp-post-image" alt="ta5promo1thumb" title="ta5promo1thumb" /><p>Over the last several months, I've had the privilege of working on the development team for the Ta5 iPhone app—a social networking tool that will be used at networking events for technology professionals.

I had already developed several smaller-scale apps on my own. However, with this project we at Worthwhile wanted something better. We wanted a rich user experience.]]></description>
			<content:encoded><![CDATA[<img width="90" height="90" src="http://www.worthwhile.com/blog/wp-content/uploads/2010/09/ta5promo1thumb.png" class="attachment-post-thumbnail wp-post-image" alt="ta5promo1thumb" title="ta5promo1thumb" /><p><p><a href="http://www.worthwhile.com/blog/wp-content/uploads/2010/09/ta5promo1.png"><img class="alignright size-medium wp-image-5361" title="ta5promo" src="http://www.worthwhile.com/blog/wp-content/uploads/2010/09/ta5promo1-136x300.png" alt="" width="136" height="300" /></a>Over the last several months, I’ve had the privilege of working on the development team for the Ta5 iPhone app—a social networking tool that will be used at networking events for technology professionals.</p>
<p>I had already developed several smaller-scale apps on my own. However, with this project we at Worthwhile wanted something better. We wanted a rich user experience.<span id="more-5117"></span></p>
<p><strong>Attention to Details</strong><br />
After a few days of working with the rest of the team, I quickly learned that I wasn’t going to get by with just the default UI components. As the designer presented me with mockups for custom interface widgets, I realized that attention to interface details will really set an app apart from the crowd. Looking back, I probably spent about as much time implementing design details as I did writing the logic behind the interface. Learning how to customize the interface down to the last detail was probably the most valuable thing that I learned from the development of this app.</p>
<p><strong>Platform Choice</strong><br />
From a higher-level perspective, I also learned that making an app that really pops out on every mobile platform is quite a challenge. We started off the project using PhoneGap, a cross-platform framework for building mobile phone apps. The thinking was that this would make it easy to migrate the app to other platforms such as Android without having to rewrite much other than the interface. However, I learned that this was going to come with a cost of speed and UI-nativeness in areas that we couldn’t really afford to skimp on for this app.</p>
<p>Since PhoneGap moves most of the logic into JavaScript, it makes it more difficult to take advantage of OS or device-specific features. I was actually very impressed with the way PhoneGap was able to expose device features such as the GPS and accelerometer in its JavaScript library. However, certain features that our app required such as integration with the iPhone address book and photo library are still missing from PhoneGap. Interface-wise, the jQTouch project has done a pretty good job of mimicking the iPhone UI widgets in JavaScript, but it still has some glitches and can slow down the app.</p>
<p>In short, PhoneGap provides a WebKit browser-in-a-box that allows you to build a browser-based app using HTML, JavaScript, and CSS, that can also take advantage of GPS, accelerometer, and sound. Depending on your needs, this may be just the framework for you. It will be interesting to see how it develops in the coming years.</p>
<p><strong>Making it Shine</strong><br />
Another awesome design bit I gleaned from this development process was how to use CoreGraphics to add some polish to the interface. In the development of this app, I learned how to give pretty much anything rounded corners. Rounded corners are all over this app’s design, and I was very happy to find that you can simply alter the cornerRadius property on any layer (pretty much everything gets drawn as part of a layer) and everything is cool. CoreGraphics also lets you do cool gradient fills. I was able to use a combination of these two tricks to create glossy-looking buttons with rounded corners in a few places throughout the app.</p>
<p><strong>Rolling with the Punches</strong><br />
Finally, I learned that iOS is not perfect (but it still beats the competition in my book). Yes, I know that was stating the obvious. However, up to this point, I had written a handful of other iPhone apps and never ran into any issues across different devices or OS versions. I soon realized that this was because I hadn’t ever built an app that used such a broad range of the SDK.</p>
<p>Throughout the development process, there were several iOS updates that came out, and along the way a few things were broken. Most of these were rendering issues, but a few of the differences resulted in crashes on different devices or OS versions so I had to dig around for the answer. Fortunately, in all cases, I was able to come up with a solution that worked on all versions without any runtime checking to see what version of iOS was running. The multitasking features of iOS 4 made me re-think a few of my assumptions about the flow of navigation through the app since the user will not always start from the same place and the app will not always start “fresh.”</p>
<p>All in all, it was a great experience. Once you’ve seen <a href="http://www.ta5app.com/" target="_blank">the app</a> for yourself, let me know what you think!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.worthwhile.com/blog/developing-a-large-scale-iphone-app/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>On Computers and Linguistics</title>
		<link>http://www.worthwhile.com/blog/on-computers-and-linguistics/</link>
		<comments>http://www.worthwhile.com/blog/on-computers-and-linguistics/#comments</comments>
		<pubDate>Thu, 20 Aug 2009 15:04:43 +0000</pubDate>
		<dc:creator>Ian Wagner</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.worthwhile.com/blog/?p=2463</guid>
		<description><![CDATA[<img src="http://www.worthwhile.com/templates/worthwhile2009_2/images/worthwhile_blog_placement.png" class="wp-post-image" /><p>All through high school I was a fairly typical child in that I rather disliked English class. What I didn’t realize though was that I really loved languages. As a computer programmer, I have learned more than I expected about languages in general, and how there are many parallels between computer and human languages. In [...]]]></description>
			<content:encoded><![CDATA[<img src="http://www.worthwhile.com/templates/worthwhile2009_2/images/worthwhile_blog_placement.png" class="wp-post-image" /><p><p>All through high school I was a fairly typical child in that I rather disliked English class. What I didn’t realize though was that I really loved languages. As a computer programmer, I have learned more than I expected about languages in general, and how there are many parallels between computer and human languages.<span id="more-2463"></span></p>
<p>In recent years I have been able to pursue one of my childhood dreams of studying Asian languages. Through this I have learned that there are actually several similarities between the way you learn human languages and the way you learn computer languages. One of the basic grammatical fundamentals of any human language is the parts of speech. A statement in a computer language can be dissected much the same way as an english sentence. Take, for example, this sentence: Drink Jolt. We have 3 parts of sheech represented in this sentence: the understood subject, the verb and the object. In a computer language, we might express this like so: self.drink(jolt). In this analogue, self is performing the action drink with an object jolt.</p>
<p>From this rather simple example, armed with some basic knowledge of the “parts of speech,” you can start to get a feel for the syntax of this computer language. If we were to look at more examples like this you could get an even better feel for how these “parts of speech” are arranged. After you have learned these fundamentals, you can quickly expand your knowledge of a computer language by learning more “vocabulary.” This is another way in which the learning process is parallel to that of a human language. After you have mastered the basics of grammar, all that is left to do is expand your vocabulary in order to master a language.</p>
<p>As one of the owners of The Worthwhile Company frequently says, “it’s all about patterns.” This is readily apparent to anyone involved in bit-building, and as such, I started to notice patterns that developed as I learned computer languages. Now I am seeing that the same patterns hold true for human languages too. So, if you’re a programmer, go out and try to pick up another language! Perhaps you’ll end up being a polyglot some day.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.worthwhile.com/blog/on-computers-and-linguistics/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Windows 7: What Vista was Supposed to Be</title>
		<link>http://www.worthwhile.com/blog/windows-7-what-vista-was-supposed-to-be/</link>
		<comments>http://www.worthwhile.com/blog/windows-7-what-vista-was-supposed-to-be/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 17:41:15 +0000</pubDate>
		<dc:creator>Ian Wagner</dc:creator>
				<category><![CDATA[Industry Trends]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Vista]]></category>
		<category><![CDATA[Windows 7]]></category>
		<category><![CDATA[XP]]></category>

		<guid isPermaLink="false">http://www.worthwhile.com/wpblog/?p=2239</guid>
		<description><![CDATA[<img src="http://www.worthwhile.com/templates/worthwhile2009_2/images/worthwhile_blog_placement.png" class="wp-post-image" /><p>Quite a stir has arisen lately over the release of the latest Microsoft operating system. When I first heard about Windows 7, I was naturally a bit skeptical. My primary computer is a MacBook that dual-boots Ubuntu, so I’m not exactly a Microsoft fan by any stretch. Given the disappointing track record of Microsoft’s recent [...]]]></description>
			<content:encoded><![CDATA[<img src="http://www.worthwhile.com/templates/worthwhile2009_2/images/worthwhile_blog_placement.png" class="wp-post-image" /><p><p>Quite a stir has arisen lately over the release of the latest Microsoft operating system. When I first heard about Windows 7, I was naturally a bit skeptical. My primary computer is a MacBook that dual-boots Ubuntu, so I’m not exactly a Microsoft fan by any stretch. Given the disappointing track record of Microsoft’s recent operating systems, especially Vista, I was pleasantly surprised after experimenting with the betas and talking with users of the new RTM version.<span id="more-2239"></span></p>
<p>When upgrading from XP to Vista, many were dismayed to find that they had to upgrade their machines quite a bit in order to run the new O/S. If you have ever tried running Vista on a machine with less that 1GB of RAM, you know just how much of a resource hog it is. Microsoft has done a great job of fixing this problem in Windows 7, which uses far less system resources. Windows 7 also features a much faster start-up time in the ballpark of about 30 seconds. Still not quite as fast as my Linux installation, but quite impressive.</p>
<p>Microsoft has also come up with an interesting solution to another one of Vista’s woes: incompatibility with older software. Many programs that work fine on XP will not run on Vista for a variety of reasons. However, with Windows 7 and a processor capable of virtualization, you will be able to use all of your XP applications in a virtualized environment that Microsoft provides. Obviously, you will need a more powerful system to take advantage of this feature, but it will be very handy to be able to run older software such as Office 2000 right from the Windows 7 start menu. I have yet to see how well it works for 3D gaming, and unfortunately it will not be included in the “Home” version of the operating system, but it is definitely a step in the right direction.</p>
<p>Windows 7 definitely looks promising, for a Microsoft product. I have to say I am impressed, and very glad that they have finally fixed many of the issues that plagued Vista. I am very eager to see how it does.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.worthwhile.com/blog/windows-7-what-vista-was-supposed-to-be/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>App Store Censorship… again</title>
		<link>http://www.worthwhile.com/blog/app-store-censorship-again/</link>
		<comments>http://www.worthwhile.com/blog/app-store-censorship-again/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 13:17:32 +0000</pubDate>
		<dc:creator>Ian Wagner</dc:creator>
				<category><![CDATA[Industry Trends]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[AT&T]]></category>
		<category><![CDATA[Google Voice]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[Mac OS X]]></category>

		<guid isPermaLink="false">http://www.worthwhile.com/wpblog/?p=2158</guid>
		<description><![CDATA[<img src="http://www.worthwhile.com/templates/worthwhile2009_2/images/worthwhile_blog_placement.png" class="wp-post-image" /><p>Through the years, Apple has built up a reputation for high-quality, well-designed, and very stylish products. The insanely popular iPhone is no exception. Apple has done a phenomenal job of shrinking down Mac OS X and adapting it for use on a mobile phone. In the process they created a software distribution system known as [...]]]></description>
			<content:encoded><![CDATA[<img src="http://www.worthwhile.com/templates/worthwhile2009_2/images/worthwhile_blog_placement.png" class="wp-post-image" /><p><p>Through the years, Apple has built up a reputation for high-quality, well-designed, and very stylish products. The insanely popular iPhone is no exception. Apple has done a phenomenal job of shrinking down Mac OS X and adapting it for use on a mobile phone. In the process they created a software distribution system known as the App Store. Of course, they never give users the option to get apps elsewhere, but that is how Apple traditionally operates. <span id="more-2158"></span></p>
<p>Before apps are accepted into the store, they must go through a review process. While designed with the intent of quality control, this system has come under heavy criticism many times. The most recent incident that brought this process into question was Apple’s rejection of the Google Voice app yesterday. Not only was the Google Voice app rejected, but at the same time Apple removed a third-party app (GV Mobile) that had similar functionality. GV Mobile was supposedly removed for duplicating built-in phone features (any app that duplicates Apple functionality is usually removed), but no word has yet surfaced on why Google’s app was rejected.</p>
<p>At this point, it would seem logical that AT&amp;T is behind the decision. Although Google Voice users would still have to pay for the AT&amp;T Phone service, users of this app would be able to easily circumvent AT&amp;T’s texting fees. At the same time, it would seem like there is another reason behind this decision, since numerous texting apps are still in the store that allow people to use some other mechanism to get around AT&amp;T. None of these have been removed from the store to my knowledge. There are also a number of apps available for connecting to VoIP networks. Both of these types of apps could be removed by Apple for duplicating functionality.</p>
<p>Why would these apps be allowed in the store, while Google Voice is rejected? It’s anyone’s guess until more information is released from Apple or AT&amp;T, but it may have to do with the way Google’s services can be used. First, for most of the free texting applications available right now, your text is sent from an e-mail address instead of a phone number. This means that the receiving party must have a phone that is capable of sending and receiving e-mail (most are, but it is not quite as convenient and may incur a charge). Second, most of the VoIP dialers are not nearly as convenient to use as the normal phone functionality because nobody outside the VoIP network can call you unless you purchase a number. Google Voice, on the other hand, gives you a phone number that you can use for all of your calling and texting. The confusion caused by this situation once again highlights the need for Apple to establish a clear, consistent policy for app approvals and rejections.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.worthwhile.com/blog/app-store-censorship-again/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Communication Revolution</title>
		<link>http://www.worthwhile.com/blog/a-communication-revolution/</link>
		<comments>http://www.worthwhile.com/blog/a-communication-revolution/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 12:28:37 +0000</pubDate>
		<dc:creator>Ian Wagner</dc:creator>
				<category><![CDATA[Social Media]]></category>
		<category><![CDATA[Google Voice]]></category>
		<category><![CDATA[SIP]]></category>
		<category><![CDATA[SMS]]></category>
		<category><![CDATA[VoIP]]></category>

		<guid isPermaLink="false">http://www.worthwhile.com/wpblog/?p=2069</guid>
		<description><![CDATA[<img src="http://www.worthwhile.com/templates/worthwhile2009_2/images/worthwhile_blog_placement.png" class="wp-post-image" /><p>From its very beginning, the Internet has been changing the way we communicate. E-mail, instant messaging, Twitter, and Facebook have all had a profound impact on the way we communicate with each other in the 21st century. Just as e-mail has revolutionized the way we write to each other, new technologies are arising that revolutionize [...]]]></description>
			<content:encoded><![CDATA[<img src="http://www.worthwhile.com/templates/worthwhile2009_2/images/worthwhile_blog_placement.png" class="wp-post-image" /><p><p>From its very beginning, the Internet has been changing the way we communicate. E-mail, instant messaging, Twitter, and Facebook have all had a profound impact on the way we communicate with each other in the 21<sup>st</sup> century. Just as e-mail has revolutionized the way we write to each other, new technologies are arising that revolutionize the way we speak to each other. VoIP is by no means a new technology, but it is one that has been gaining steam in recent years. The most recent development in the internet telephony world comes from none other than Google: enter <a href="https://www.google.com/accounts/ServiceLogin?passive=true&amp;service=grandcentral&amp;ltmpl=bluebar&amp;continue=https%3A%2F%2Fwww.google.com%2Fvoice%2Faccount%2Fsignin%2F%3Fprev%3D%252F&amp;gsessionid=Ka7kISn1uzeBVGDGG_SawQ" target="_blank">Google Voice.</a><span id="more-2069"></span> Formerly GrandCentral, Google recently acquired and rebranded this internet-based service, which allows you to route all of your phone calls through a single number. In keeping with their mission to organize all of the world’s information in one place, they also provide a central place to store all of your SMS messages and voice mails</p>
<p><strong>Receiving calls. </strong>During your initial setup, you first choose your Google Voice number from one of the available numbers. You can search by area code or letters or words you would like to have in your phone number. Being a programmer, I went with a number ending in CODE so that it would be easy for my friends to remember. Next, you set up your phones that you want your Google Voice number to forward to. To verify each of your numbers, Google gives it a ring and then prompts you to key in a code that is shown on your computer screen. Now all incoming calls to your Google voice number will be forwarded to the number(s) that you set up.</p>
<p><strong>Placing calls. </strong>The process for receiving a call from your new number is rather straightforward, but placing a call requires a little more work. If you are using a computer or other device with an active internet connection, you can place a call using the Google Voice website. Placing a call method first calls your phone, and then connects you to the other party after you pick up. If you are using a Blackberry or Android phone, Google has a free dialer application you can use to make calls through Google Voice. If you have another phone, you might be able to make calls by using one of the third-party dialer programs that are floating around cyberspace (such as GV Mobile for the iPhone or GV Dialer for a variety of phones). If you don’t have an internet connection or a mobile phone with a dialer program available, it is still possible to place a call using your Google Voice number. You can call your Google Voice number from one of your registered phones, and use the menu system to dial a number. This is obviously not very convenient since it forces you to dial the number manually instead of selecting from a contact list.</p>
<div><strong>Benefits of using Google Voice.</strong> In spite of the somewhat inconvenient method of placing calls, there are a plethora of benefits to using Google Voice. One of the biggest advantages over any other phone system is the ability to filter calls. Google Voice gives you the option to request callers to speak their name if they have never called you before. You can then decide whether to accept or decline the call when you pick up the phone. You can also mark a caller as spam or block them altogether. Spam callers are always forwarded to your voicemail, and blocked callers are ignored.</p>
<p>Another obvious benefit is that you never have to change your number if you move or get a new cell phone (although if you move to another area code this may be desirable, so you can change your number at any time for a $10 fee). Since all your calls all come through one number and you can forward to whichever phone(s) you want, you also have the flexibility of picking up calls wherever you have a Google-registered phone. Along those lines (no pun intended), you can also transfer your call to another one of your registered phones in the middle of a call by simply pressing the * key.</p>
<p>A final benefit that I find particularly interesting is that you can, with a little bit of technical knowledge, set up your computer (or an IP phone) to place and receive calls with Google voice as well so in theory you don’t actually need a phone anymore. Google has chosen to support the free Internet calling service <a id="eshx" title="Gizmo5" href="http://gizmo5.com/" target="_blank">Gizmo5</a>. Gizmo5 is much like <a href="http://www.skype.com/" target="_blank">Skype</a> in that it allows you to make calls to other users of the service for free using a computer with a SIP softphone client. Just as with Skype, you have to pay a small fee to make calls to a standard telephone or to receive a number that phone users can call you from, but this all changes with Google Voice. Your new number from Google will forward to your Gizmo5 SIP address! This allows you to literally take your number anywhere in the world that you have an Internet connection! I think that you can start to see all of the possible uses of this new technology now, and I haven’t even discussed all of the features yet!</div>
<div>All-around, Google has done an excellent job so far with their latest product. As with everything though, there are a few things I would like to see changed. Here is my top three wish list for the Google Voice team:</p>
<ol>
<li><strong>International SMS</strong>: I have lots of friends out of the country, and one in particular that I like to text with a lot, but Google Voice only supports text messaging in the US for now. Oddly enough, I tried sending a message to one of my friends in South Korea and it reported it as being sent successfully. The message never arrived and I had to dig around the help forums for a while before I found that SMS only works in the US.</li>
<li><strong>Encryption:</strong> It is quite possible for someone to intercept packets and listen in on your conversation if it is transmitted unencrypted over the Internet. This situation can occur when using a SIP client with your Gizmo5 account to place or receive a call. I would feel much better about using Gizmo5 with Google Voice if Google would support one or more of the VoIP encryption protocols that are available. I have suggested that they use the <a href="http://zfoneproject.com/zrtp_ietf.html" target="_blank">ZRTP</a> protocol which provides a simple mechanism for the callers to verify that the conversation is indeed encrypted and that it has not been compromised by a man-in-the-middle attack.</li>
<li><strong>Integration with Google Talk:</strong> This idea just makes sense. Google has a computer-to-computer calling system established, and now they have a good-sized Internet to telephone system. Why not merge the two together and join IM, video conferencing, and phone calling into one application. That would <em>really</em> be a communication revolution!</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.worthwhile.com/blog/a-communication-revolution/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

