Hackdance & Second Government

Dru and I participated in Hackdance this past weekend. It was a 48 hour hackathon at the Deer Valley Lodges in Park City as a part of Collective's Disruptfilm event at Sundance Film Festival. From the site:

Hackdance: the first celebrity-driven social impact hackathon kicks off on January 16th, & you're invited to take part in this historical event! Your mission: partner your tech skills w a celebrity passionate about changing the world to design apps/hacks that use technology to create social impact.

We took school and work off on Thursday and Friday, not quite sure what we'd gotten ourselves into. Dru brought her product management and design skills to the game and I came in with my iOS and Android background. The event started with the celebrities sharing their ideas for social impact. There were a lot of good ideas, including the use of Plexi APIs for reporting and preventing cyber-bullying, an ambitious but thoughtful idea for virtual second government, and a movement for improving the Plant-a-Fish donation collection, among other ideas. Dru and I liked a few of the projects, and ended up joining our first choice with Alex Ebert for the idea of Second Government.

Dru and I teamed up with two "serial hackathoners" who were invited out from Silicon Valley. I think they've done something like 15+ hackathons in the past year, placing top 3 in over half of them. It was pretty cool getting teamed up together...until I realized how serious about hacking they were. With no hackathons under my belt, my most similar experiences were the BYU Mobile App Competition and Startup Weekend. Joining with a team of hackers was quite an adjustment.

The main difference was that both the mobile app competition and SW had an end goal to build a complete product or business, not just put something together for demo purposes. We had significantly different theories on how to tackle the weekend, but overall ended up with a pretty good balance. We ended up creating a semi-functional Reddit- and Stack Overflow-inspired website and iOS app, featuring proposals for governmental change and a system of comments and upvotes.

The goal of the platform is to provide an open system for proposing governmental change without all the bureaucracy and pessimism. Ideas are then voted, vetted, and refined, with the most popular suggestions rising to the top. While most people don't bother voicing their opinions on government because of little hope it will ever be heard, SecondGov provides the platform to test out ideas in a virtual world without the worry of what can or can't be accomplished. Ultimately, proven, popular ideas from SecondGov can be taken (with their tens or hundreds of thousands of upvotes) to the real government to make real change happen.

The team

The team

Alex, who won a golden globe for best original score just last week, was awesome to work with. He was definitely the most hands-on and supportive of the celebrities from my perspective. He spent a lot of time working with us on the direction of the app, design, and prepping for our pitch. Plus, he's an artist, a writer, and a performer... he knows how to make a point with some conviction.

Dru making an awesome face

Dru making an awesome face

Our pitch to the judges went well. We definitely bit off more than we could chew by working on a web app, iOS app, exploring a virtual reality platform, and trying out a pre-release iOS motion-tracking SDK by Plantronics in the two days. Our demo included a piece from all four, but my personal favorite was the Plantronics concept headset. We used it in conjunction with the iOS app to view proposals hands-free and upvote or downvote them with a nod or shake of the head. It wasn't necessarily a cornerstone piece to the premise of SecondGov, but it was fun to work with one of the hackathon sponsors and brought a little wow factor into the pitch. I'll post a video later if I get my hands on it.

Pitching to the judges

Pitching to the judges

The result was awesome. We won first place for social innovation, including a 5k cash prize and a 10k investment from the Sorenson Global Impact Investing Center.

Alex sharing the vision

Alex sharing the vision

Awesome projects from every single team. Other final products included a Google Chrome extension for reporting cyber-bullying, YoungStarter, improvements to the Plant-a-Fish donation system, Rah Rah's tech truck, a SHFT mobile app, and a Lead and Pledge movement to end domestic violence.

Related links

Why singletons are bad

Disclaimer: This isn't a total knock on singletons. Alternate title: "Why singletons can be bad".

Software Design

Yesterday I had a conversation about software design with an experienced colleague and found myself reaching when discussing design patterns. Specifically, we got onto the topic of the singleton pattern. 

Knowing from recent experience at Cocoa Camp that singletons are not the end all be all solution for object oriented programming (yes, I might have thought that at one point), I was careful not to sound overly enthusiastic that I used the singleton pattern. I first learned about the singleton pattern in an Android development college course that I took in Winter 2011. It sounded pretty cool then, and it was even a semi-significant part of the midterm. I later began learning Objective-C, and after using the pattern in a few iOS apps over the past year - including collaborative projects with other developers who hadn't ever mentioned any negatives in the singleton pattern - I had gradually assumed that they were a pretty solid way to go. Last month at Cocoa Camp the pattern came up and although we didn't get into any detailed discussions on it, I got the impression that singletons weren't as favorable as I had thought... 

Back to our conversation, I mentioned that I knew singletons had positives and negatives and explained a little more about why I'd used them in the past. He pried pried a little deeper, asking two questions that I want to expand on. "What are some of the downsides to the singleton pattern?" "What alternative design patterns would you suggest?" I mentioned a few things, including keeping the object in memory for the entire life of the application, rather than when specifically needed, and that an alternative method could be to pass the data between view controllers rather than via the shared singleton instance. Then we moved on.  Conversation over.

Why singletons are bad

Later (okay, ten minutes after the conversation ended), I found Steve Yegge's blog post, Singleton Considered Stupid:

Begin Quote 

Here's what most people got out of Design Patterns: "blah blah blah blah SINGLETON blah blah blah blah". I kid you not. I've seen this so many times that it's become a full-fledged pattern in its own right; patterns need a name, so let's call it the Simpleton Pattern.

The Simpleton Pattern unfolds like this:

Me: So! Have you ever heard of a book called Design Patterns?

Them: Oh, yeah, um, we had to, uh, study that back in my software engineering class. I use them all the time.

Me: Can you name any of the patterns they covered?

Them: I loved the Singleton pattern!

Me: OK. Were there any others?

Them: Uh, I think there was one called the Visitater.

Me: Oooh, that's right! The one that visits potatoes. I use it all the time. Next!!!

I actually use this as a weeder question now. If they claim expertise at Design Patterns, and they can ONLY name the Singleton pattern, then they will ONLY work at some other company.

End Quote

I really hope I didn't fall into this category in the mind of my colleague, but wow was I unprepared for those two questions. Especially the second question. There are few design patterns with a name as catchy as the singleton pattern. There certainly are other ways and methodologies to accomplish a programming objective, but what's the catchy name for instance classes, interfaces, and passing data between controllers?

I've done some more reading and in hopes of getting it right the next time, here are some of my thoughts.

What do you think are some of the downsides to the singleton pattern?

There are actually a ton. The reasoning is pretty straightforward and I don't know why I didn't think of these earlier.

  • A shared singleton class requires that memory be in use throughout the entire application, even when the object isn't needed.
  • Singletons hide dependencies!
  • As a result of these hidden dependencies you can lose track of the coupling. Instead of meticulously passing each object you need (and only the objects you need) into a function, you instead call [AppUser sharedAppUser] to access your shared instance. While it feels cleaner since it can mean less lines of code to get the access you need, you can end up with very tightly coupled code.
  • You can't (really) subclass a singleton
  • Singletons are hard to test! (1) With hidden coupling it's difficult to create mock objects and (2) singletons generally exist for the lifetime of the app which presents a problem for unit testing, as each unit test should run independently of other unit tests.
  • Just think of it as the "global-ton" pattern. The name isn't that far off. Does it still sound as sexy? 

There are some upsides too, but I'll save that for another time. 

What alternative design patterns would you suggest?

  • Object oriented programming. This isn't just a snarky answer. Use instance classes that are instantiated within the scope that they are needed and pass those objects between methods or controllers as necessary. 
  • Create the instance of your object only within the scope that is needed (be careful not to abuse the AppDelegate).
  • Use dependency injection to pass a single instance of the object to the components that need it (like your unit tests).

Takeaway

      Be smarter. Understand what is actually happening when you use the singleton pattern. As tempting as slapping in SynthesizeSingleton.h into an iOS project is (see http://www.cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.html), it is NOT the solution to all your problems. You may not need it at all. Tightly coupled code can be a major problem with singletons, and chances are you probably aren't unit testing (or not properly anything) whichever objects you've transformed into singletons ...which you should fix. Most of all, if you enjoy software design but can only list of the singleton pattern when trying to have an intelligent conversation about design patterns, you have homework to do.

      Sources / Related Material

      Growing Pains is Making a Comeback

      If you know me personally, you probably knew that I worked on an app called Growing Pains for last year's BYU Mobile App Competition. It's a photo journal designed to help you easily capture photos of your growing child. The interface is designed to allow you to quickly browse through and see your child's growth over various time periods (ideal for newborns and toddlers -- or puppies). While Growing Pains was a success in the competition, winning over $2000 value in awards and placing 5th overall, unfortunately it has not yet seen the light of day.

      A partner on the project and I have been talking recently about bringing it back to life, and last week while at Cocoa Camp Apple challenged us to bring our own ideas to work on, so I did just that. On Monday of last week I ctrl+shift+N'ed a new project in Xcode and started clean. Did this for several reasons, firstly, because Cocoa Touch changes so much from year to year that I'm sure our existing code base would require some amount of updating to get in line with the latest conventions and best practices. Secondly, and the bigger reason, is that while SDK changes have been semi-significant, changes to iOS design patterns have been EXTREMELY significant. Take the example below.

      You've probably seen and heard all about iOS 7, so I'll save my personal thoughts on the change for another discussion, the important points to note are the focus on simplicity, utility, and depth. With the greater population generally familiar with smartphones, as an app designer & developer I can now eliminate the use of some of the more cutesy effects that previously communicated "tap here", "I am a menu", "this is a button", and so on. Apple has also stressed depth in the new design, despite it looking more flat than before. By adding blurs, realistic motion effects, and new levels of perspective, iOS 7 is inherently more realistic than before, albeit far less skeuomorphic.

      Growing Pains is now undergoing its own transformation from the old world to the new. Here are a few of the design concepts for the new UI, shown alongside the original designs. Please feel free to jump in if you have any thoughts or suggestions. These designs are being iterated on almost daily at this point.

       

      What do you think? Are there any elements of the old design that you like better, or feel are missing in the new versions? Is it any more or less intuitive than before?

      Maybe Microsoft is doing it right. Or maybe they're not.

      Dell Venue Pro, running Windows Phone 7.5

      Since I first began seeing concepts of Windows 8 I kept thinking, huh, maybe Microsoft is onto something here. Despite being both an Android and an iOS fanatic, I have been impressed with the Windows Phone OS since trying out Windows Phone 7.5 from Dec 2011 - March 2012 on an extra Dell Venue Pro my dad had available. The hardware was...a brick... to put it nicely, but the OS itself was excellent. 

      Over the last 18 months I've found myself continuously (and to my friends' amusement) defending Windows Phone as a viable mobile operating system, and, as an extension, defending Windows 8. I've gushed over the Lumia 920, HTC 8X, and now the Lumia 1020. I almost bought all three of these devices on numerous occasions (just ask Dru). While I maintain that Windows Phone is a great OS, I'm coming to terms with the idea that maybe Microsoft isn't doing it right and that they did in fact jump the gun on the idea of the convergence of the desktop and the mobile experience. Since MS's release of Windows 8 there's been talks of how revolutionary and visionary it is. Ahead of its time. Some referred to it as showing that Microsoft had not only caught up to Apple and Google, but far surpassed their ability to deliver innovative products that end users didn't even know they wanted until they tried it (take the iPad for example).

      Well, after a year of saying to myself, yeah, maybe they did get it right, maybe Windows 8 isn't as radical as all the critics say, maybe we will all be using touchscreen desktop computers in a couple years, I'm now saying maybe not

      The truth is that the people don't want the same experience on a tablet as they have on their desktop or laptop. Sure, they like familiarity, but at the core a user's interaction with a tablet and user's interaction with a desktop computer is just different. And people are fine with that. The design of an application on the desktop environment is (and should be) vastly different than the tablet and the phone representations of that same application. Probably one of the best examples of this is the Day One app for iPhone, iPad, and Mac. Ask any active Day One user if they'd like to combine either the iPhone and iPad experience or the iPad and Mac and they'd look at you like you were crazy.

      Day One for iPhone, iPad, and Mac

      Further evidence that people just don't want to merge desktop computing and mobile computing... look at this Acer commercial comparing their 8" Windows tablet to the iPad mini. This is my opinion, and I bet some Windows 8 fans view this commercial as a win for Acer and Windows 8 Pro, but firstly, who wants to play Halo on a tablet (not that they even look like they're actually playing...)? Don't get me wrong, I love iPad games... Plants vs. Zombies vasebreaker endless mode... that'll keep me busy for HOURS. But I don't really care for the idea of getting a dumbed down PC gaming experience on my iPad. Maybe if the entire game was reimagined for iPad, and it really was just a distant relative of Halo, but the ability to run full-fledged PC games on a tablet just doesn't do much for me. Okay, next flaw in the video, of all the things you can do on a tablet, why show someone accepting changes to a Word doc? I mean, seriously, of all the things I've used a tablet for (thinking my Kindle Fire, Nexus 7, and iPad), I have never once wanted to accept changes to a reviewed Word doc. And if I did, I wouldn't want to be using the traditional Word app to do it (see all those tiny touchpoints?!).

      UPDATE: I hadn't done my research on Halo Spartan Assault, and it looks like it very much is  the Halo experience reimagined for touch. That's cool. What I was trying to get at is the idea of playing traditional PC games on a tablet running Windows 8 Pro.

      What I'm getting at (and have probably repeated 20 times by now) is that I no longer believe that we are heading in the direction of an integrated desktop and mobile computing environment. Those who never got on the Windows 8 bandwagon are probably thinking, yeah, knew that all along. But for those who have seriously entertained the idea of everything converging into a single, universal experience, either the timing is wrong or the implementation is wrong. Either way, maybe Microsoft isn't doing it right after all.

      Google Fiber coming to Provo

      Our pre-registrations paid off!

      Let's go utah... pre-register now. All of you. 1000Mb/sec #googlefiberfiber.google.com/about/

      — Kyle Clegg (@kyle_clegg) July 26, 2012

       

      gfiber2.png-fileId=19601385.png

      The #EpicProvoAnnoucement hashtag on twitter has truly turned out to be epic. Provo is getting Google Fiber and it makes sense for so many reasons:

      Screen Shot 2013-04-17 at 2.02.43 PM

      Screen Shot 2013-04-17 at 2.02.43 PM

      • Entrepreneurship - Provo is one of the best places for tech startups outside of Silicon Valley -- on the same level as Austin.
      • Infrastructure - There's an existing infrastructure in place, put there by the city of Provo nearly 10 years ago. It failed (IMO) due to the greed of who decided to limit the speeds to near cable-levels and charge only marginally lower than other providers. Stifling innovation in the pursuit of some extra $$s.
      • Data - Genealogy research is huge in Utah, with several large organizations likely to get on board ASAP.
      • Students - Provo is home to a major university in BYU, with another 25,000+ university ten minutes away in UVU.
      • Innovation - Utah IS Silicon Slopes!

      Company Culture

      This resonates extremely well for me: "There’s still a traditional view out there that agile methods, hacking, open-source and new technologies don’t have a place in serious business. Our view is that all of those wonderful things power people, businesses, and society forward. We’re obsessed with how things work, are inspired by change, and simply love to build stuff. So we hire people and take on projects that let us do just that."

      from http://www.controlgroup.com/careers.html

      Mobile App Competition Results

      timeline.png

      This post is long in the coming... actually should have been written at the end of November.  Brief recap about Growing Pains and how it took home some awesome awards in the BYU Mobile App Competition.  We had big plans for Growing Pains, but at the time of the submission deadline we were probably only 40-50% done with our first iteration feature set. I honestly was not expecting to take home much from the competition.  The one award I was fairly confident about was the best Ruby on Rails backend, mostly because I was guessing that we were one of the only RoR backends.

      My sister Kandace and I were there and were pumped when they announced Growing Pains as a top-16 semifinalist out of 25, with a guaranteed $250 cash prize.  Dru couldn't make it because it was during the day and she would have to miss work.  All 16 semi-finalists gave a 2 minute demo and presentation on their app, which was exciting for me.  I've never made a pitch to 500 people before.

      Then the awards... Kandace and I were super stoked when the first award they gave out -- BizVector award for business potential from MokiNetworks -- was given to Growing Pains!  $100 gift card.  Sweet!  Next up the finalists.  Again, the very first app they announced (which just added to the excitement and surprise) was Growing Pains, 5th place with a $1000 cash prize.  Other top apps included a couple games and 2 business productivity apps, with a top cash prize of $3000.  We also won the Ruby on Rails API award, which was a iPad for each team member.  In total we came away with $2100 in awards and prize money, plus a heavy dose of validation and encouragement about our idea and the direction Growing Pains was heading.

      finalists.png

      We've continued working on Growing Pains and recently started beta testing with couple family members.  If you're interested in giving us some pre-release feedback - let me know!

      iOS Final Exam

      In 3 hours do: 1) download and parse json for version number and location of zipped sqlite db file 2) if first time or newer version than previously downloaded, download zip using a progress indicator 3) save zip to device documents folder 4) decompress zip file and save 5) delete saved zip file 6) open connection to db, query last updated time and display

      Recommended frameworks: afnetworking ziparchive sqlite

      and the result.... http://screencast.com/t/UXm4kHuMnuq. i didn't have time to make it look pretty, but I finished all 6 tasks. it took every minute of those 3 hours, but I'm pretty proud of it. :0

      The iPhone 5 - What's Missing?

      iphone-5-white-black-back-featured-360x360.jpeg

      The iPhone 5 looks awesome.  Some very exciting enhancements. My wife got hers the first day they shipped and loves it.  But for me, I have to admit I feel like it's more of the same.  The new screen size is exciting, and I'm really glad they decided go bigger, but aside from that just about everything was "expected."  Don't get me wrong, I don't think they need to go and reinvent the best-selling product in the world every year, and I really don't mean to disrespect the iPhone, because I am convinced it will be an enormous success, but personally I'm not yet convinced that this is my new phone.  Not that I buy into the Android argument that this and that feature have been on Android for months or years, because I do think Apple does a fantastic job of taking existing technology and integrating it in ways that are much more intuitive and user friendly.  Maybe it's just the buzz surrounding the iPhone is wearing off for me.  In any case I'm looking forward to all the new phones coming out this fall. Particularly hoping to test out the Lumia 920, HTC 8X, and hopefully a new Google branded Nexus device in the next 2 months.

      Back Online

      success_kid2.png

      The good news is I was able to restore 99% of my content thanks to Webhosting Pad's automated backup service.  After getting infected with malware many moons ago I thought all hope was lost for a time.  

      Webhosting Pad came to my rescue by delivering to me a very recent database backup from the time of the attack and by wiping everything out so I could start clean again.  Some phpMyAdmin magic and a little TLC later and voila, we're back.  It looks like all my old images are now deadlinked, but hey, it could be worse.

      Geotagging

        I read an article this week titled Could Geotagging Pose a Threat to Your Security.  I felt like it was a relevant topic to data communications and general tech because geotagging is essentially using a smartphone's GPS features to tag the latitude and longitude of the pictures that are taken.  This significant advancement in data communications is an incredible tool and creates a wide array of creative possibilities with the geologically tagged images.  However, it also poses some serious security threats.

      The article contains comments from several officials that explains why geotags can be so dangerous.   "Geotagging can be dangerous when you don't intend to share that information with someone else, when someone else has a vested interest in knowing what that location is of the picture you took," says Jeremiah Johnson of the National White Collar Crime Center.  This poses a major threat, because predators can potentially analyze your photos off your blog, website, or social network and use the embedded geotag to identify the exact locations of some of your most routine daily tasks.  And worse yet, your children's common locations.  The article concludes by referring to a video on several ways to disable geotags on your smart phone.

      I see the ability to geographically tag my images as a wonderful tool that, as with all technology, with proper use within well-established boundaries, can be a great way to manage and collect your digital media.  My personal decision (and recommendation) is to use geotagging in all cases on my phone, but from here on out the change I will make is that I will remove the geotag information before posting any potentially "private" images on the Internet.

      I feel like there are too many advantages of this technology to do something drastic like shut it off completely.  I loved being able to see all my photos by location on a map on my iPhone.  Without geotagging that wouldn't be possible.

      Years down the road, I'd like to be able to take a look at my personal history by looking at a map and seeing collections of pictures in all the locations I’ve lived or traveled.  What amazing technology!  Sure, you could manually specify the location of each photo, but if we're talking hundreds or thousands of pictures, the geotag is such a innovative (and creative) feature that enables wonderful creativity.

      As with any technology, we must make sure we understand the technology and approach it correctly.  Similar skepticism at the risks of new technologies occurred with AOL instant messenger and other messaging clients that came out 10-15 years ago.  Look at the widespread use of these technologies today... where would we be without them!  Geotagging must be handled safely and responsibly, and it can be an incredible tool that takes advantage of years of technological innovation in computer hardware and data communications!

      Using PHP and LDAP to Authenticate Against BYU's Servers

      Been working on a BYU project at the law school where I only want to let BYU students post on a message board.  I needed an authentication solution and decided to give LDAP a try since I've heard it's relatively simple.  Here's the two step process: 1) Create a form that accepts a username and password as follows.

      <form action=login.php method=post name=Auth>

      Please log in using your NetID and password:<p>

      <table cellspacing=3 cellpadding=3> <tr> <td>Username: </td> <td><input type=text name=username size=16 maxlength=15></td> </tr> <tr> <td>Password: </td> <td><input type=password name=password size=16 maxlength=15></td> </tr> <tr> <td colspan=2><input type=submit value=Authenticate style='width:100'></td> </tr> </table> </form>

       2) Create a login.php file.  This file accepts the username and password from the form, then connects to BYU's LDAP server (ldap://ldap.byu.edu - port 389).  After connecting, it binds the connection using the username (NetID) and if successful returns true.  Below, the authenticate function is called and if successful sets the 'loggedin' session variable to 'true' (not a boolean).  It then redirects back to the previous page, which, in this example is the message board I'm working on.

      <head> <?php session_start(); ?> </head>

      <?php

      echo "test"; echo "</br>";

      // get username and password from form $username = $_POST['username']; $password = $_POST['password'];

      /* * checks the credentials against the LDAP server * $user - RouteY * $pass - password */ function authenticate($user,$pass){

      echo "</br>"; echo "Authenticating..." . $user;

      // prevents guest account access if($pass == ""){ return false; }

      try{

      $Yldap_location = "ldap://ldap.byu.edu"; $ldap_port = 389;

      // call the ldap connect function $Ydatabase = ldap_connect($Yldap_location, $ldap_port);

      // bind the connection $good = @ldap_bind($Ydatabase, "uid=".$user.",ou=People,o=BYU.edu", $pass);

      if($good){ // valid credentials return true; } else{ // invalid credentials return false; }

      } catch(Exception $e){ return false; } }

      // call authenticate function if(authenticate($username,$password)){

      // authenticate successful echo "</br>"; echo "SUCCESS";

      // set session $_SESSION['loggedin'] = 'true';

      // redirect echo $_SESSION['loggedin']; $url = "http://www.law2.byu.edu/page/messageboard.php"; //$url = "http://www.law2.byu.edu/page/messageboard.php"; header("Location: ".$url); } else{

      // authenticate fails echo "</br>"; echo "FAIL";

      // redirect to login header("Location: http://www.law2.byu.edu/page/messageboard.php"); } ?>

      Super Wi-Fi - The Dawn of a New Era

      Vocab Lesson to start - SUPER WI-FI - Super Wi-Fi is essentially Wi-Fi as we already know it, but on a new, unused block of unlicensed spectrum (thanks FCC!).  This spectrum ranges from 50 MHz to 700 MHz and is at a much lower frequency than Wi-Fi is now, which will allow for better travel of data signals. I recently read on article on Super Wi-Fi.  The article makes some great points about Super Wi-Fi, which is supposedly the direction we're all heading.  Should it pan out, Americans will have the ability to get Wi-Fi access all across town, or campus, or park, or whatever it may be.  This makes me think of two futuristic possibilities: (1) the possibility of every human being having some kind of ever-connected bracelet, or ring, or even chip in them and (2) the fall of cell phone providers.

      The article begins by shedding light on the first "Super Wi-Fi" network in Wilmington, North Carolina. With the first efforts relatively successful, are we ready to move everyone over to "Super Wi-Fi"? Not so fast, the article argues. "New Hanover County IT Director Leslie Chaney says that the network is being used primarily as backhaul technology for the time being and won't be available for residential subscribers in the county for at least a year."

      The article goes on to describe some of the problems that Super Wi-Fi will still need to overcome. Some of the problems include establishing network standards that have yet to be worked out and mass-producing chipsets that will work on the spectrum. Overall though, Super Wi-Fi is impressive. Having taken advantage of unused TV frequencies, Super Wi-Fi is at an overall lower frequency, which means less interference from rain and walls. The county estimates that the networks will be ready for Super Wi-Fi in a year, and the country will be ready in 2-3 years.

      The first impact mentioned has to do with monitoring human life.  I was telling my wife last week that I thought embedded heart-rate, temperature, and other health/performance measuring sensors in the everyday wedding ring will be an amazing technology in the future (and that we should build it).  With Wi-Fi access anywhere, and data-to-Wi-Fi transmitting chips embedded on small items such as a camera's SD card, I have to wonder when this technology will become an every day part of human life for health monitoring.  Sure, there's still years of technology and scores of legal issues to get through, but we're moving that direction.

      The second, and more pressing issue is what to do with cell-phone carriers once Wi-Fi becomes commonplace.  Think of the impact nationwide Wi-Fi (are we really that far away from it?) will have.  I've already thought of ditching my phone's phone plan, data plan, and text messaging plan and using a free service like google voice, skype, heytell, facebook messenger or some combination of those as my replacement for AT&T.  What will happen when we realize that we don't need to pay AT&T for their text messaging data (thank you WiFi), "data" data (thank you WiFi), and even cellular phone data.  With Google being one of the first to venture into providing these services, I see a whole need business model with google creeping in, charging 10 bucks a month for all the above, and the whole U.S. flocking to Google Voice.  Because seriously, why I am pay $100/month for AT&T when I can get the same data using my home/school/work Wi-Fi and soon enough... Super Wi-Fi.

      For these, and many other reasons, I think Super Wi-Fi will have an enormous impact on the world.