Posts Tagged computing
Wall Computing
Recently, I picked up Ray Kurzweil’s The Singularity is Near, which depicts an inevitable merge of man and machine. Within 20 years, he predicts that computing power and algorithmic capability will exceed that of a human brain. Well before the end of the century, Kurzweil claims that humans will be able to download their consciousness into a machine and exist as a cyber entity. I have my doubts if these predictions will come true as quickly as Kurzweil claims, but one of his predictions for the short term future caught my eye.
In the book, Kurzweil says that soon computers will be everywhere, even in the walls. Within the sensor network community, I’ve heard similar arguments dozens of times. The real question is: why do we need computers in the walls? What is the underlying motivation for having computing intelligence in your clothes, in your desk, or in your dishwasher? What can sensor networks do to improve your life? Right now, it’s really hard to say.
Another researcher in the sensor network community likened sensor network research ideas as “hammers looking for nails.” That is, solutions are invented before the problems are defined. With emerging technologies, its hard to say immediately what their benefits are. An interesting quote from a guy in the augmented reality community depicts how a new technology can sound cool but has little practical value:
“The first movies that ran could show anything, like an elephant in the zoo,” Meier said. “100 years ago it wasn’t about the elephant, it was ‘that thing is moving!’ Eventually it became more about the content…”
I would say that the current state of sensor networks is much like the above movie analogy. Computing in the walls sounds cool, but what can small, networked devices in your walls do that really matters? Few research papers offer any practical applications, since most sensor network papers focus on small fundamental problems: radio interference and MAC protocols, routing issues, and primitive event detection with sensors. The few applications that exist in research papers aren’t exciting: activity recognition with body sensor networks (e.g. sitting, standing, walking), vehicle detection and tracking, and human health monitoring.
A few of these sensor network applications have made it into the mainstream media. Lightweight health monitoring sensors may sound boring, but could provide motivation to stay in shape when your daily living habits are compared online with your peers. Another project aims to put health monitoring sensors in soldiers’ underwear, with the aim that the underwear can release drugs and treat wounds. One idea from IBM promises to have a computer at road intersections notify cars to turn off their engines and save fuel at lights. Lastly, the smart home concept promises to network household appliances together to notify users of energy usage and to reduce energy consumption during peak time periods.
Whether the above ideas are really exciting or constitute the limits of sensor network capability is another matter. I’m hoping that some really cool stuff will emerge in the future. My bet is on participatory sensing and peer to peer collaboration with mobile phone-based systems, but like most people, I don’t have any specifics.
Your digital life is out of control
Nearly every website and blog has a Facebook fan page, and most of those use the Facebook API to insert a fan page frame at the bottom of their own site. The fan page frame lists the number of fans and the names and pictures of ten Facebook users that “like” the particular site or blog. I had always wondered if the 10 Facebook users in those frames were even real users at all. Yesterday, I found that’s not the case at all:
Out of 746,369 fans, the Facebook API randomly selected my fiance as one of the 10 lucky fans to have his or her name, picture, profile link, and fan status broadcasted to the world on a website other than Facebook itself. Or maybe it wasn’t random, but reloading the page selects a new set of 10 fans, and I don’t think I’ve ever looked at one of these before and noticed someone I knew. How many of these 746,369 fans are even aware that by “liking” PostSecret, this information can be accessible to anyone on the internet and not just from Facebook? Unclear and ever changing privacy policies are just one of several significant problems with the shift to trusting third parties for nearly all of your data.
Everyone is becoming increasingly reliant on social networking sites, cloud computing, webmail, software as a service, and content distribution platforms to handle their data. Fewer and fewer people are storing their data on their own computer and instead are forking it over to third parties in droves. Entrusting a third party with your data raises three chief concerns: reliability, privacy, and freedom. First, how can you be sure a third party web service will always provide you access to your data? Next, how can you be sure your data is protected by a third party according to its privacy policy? Lastly, can do do as you please with the data you have submitted to a third party? The answers to these questions are dubious at best, but there are some steps anyone can take to minimize the problems and regain control of your information.
Reliability
Gmail seems to have a lot more problems than it used to. There’s been several occasions in the last year where I could not log in to retrieve my mail because of some server-side problem. Furthermore, I’ve been getting that yellow “still working…” bar flashing across the top of the Gmail page quite a bit, making my mail experience all the more frustrating. It makes me wonder, what incentive does Google have to ensure the integrity of your mail? It’s a free service, so if Gmail goes down, it isn’t as if they are going to lose revenue due to paying customers pulling out. Indirectly, ad revenue will decrease, but there is no direct motivation for Google to provide you, the user, with your email 100 percent of the time.
Without direct control over my email, I’m more or less living in fear of a sudden and long lasting outage, unable to read, send, or receive email. What if Google, intentionally or not, decides to block access to my account? A similar incident occurred to one Google Groups user who was locked out for three years until finally getting in touch with a customer service rep from Google after upgrading his account to a paid service. With a direct incentive to provide reliable service, Google was able to quickly fix the problem in this case. As with most web service models, users are not the customer, advertisers are, so you get what you pay for.
Privacy
When users submit data to a third party on the internet, privacy is anything but assured. As evidenced by the latest Facebook scandal, privacy policies mean nothing and are changed at will. Information thought to be private is sold to advertisers or suddenly exposed to the internet as was done with Facebook users’ likes and fan affiliations. What would happen if Gmail decided to open users’ email accounts for all to read? Users don’t have much clout to stop such changes from happening, especially without providing a monetary incentive for third parties to keep their word. Incidents such as these show that third parties care little about users and their wishes as to how their data should be handled. Users themselves are probably the only ones that can be trusted with their own data, for third parties see user data only as a commodity that can be bought and sold.
The worst case imaginable is a third party with an ax to grind against one of its users, deliberately ignoring its privacy policies to turn users’ private information against them. Unfortunately, this happens quite frequently. In the Duke Lacrosse incident, an unnamed source, most likely a Duke employee with administrative access to students’ email accounts voluntarily turned over to police an inflammatory email written by one of the lacrosse team members. If a university cannot be trusted with keeping student emails private, than how can anyone expect a free web service to keep its word? Even Mark Zuckerberg himself has been accused of accessing private information stored by Facebook users.
Freedom
While privacy explores the misuse of user data by third parties, another aspect defines the lack of control users have over data they submit to third parties: freedom. While most social networking sites, webmail, and other web services assert that any user data stored on their services is still owned by the user, this seems to be anything but true. Handing over data to a third party effectively gives that third party complete control over how that data can be used. Anyone who has ever attempted to completely erase their Facebook profile can attest to how little control they have over their own information: it’s nearly impossible. Ever tried to export from Facebook your status updates, wall posts, news stories, and photos? That’s impossible, too.
Along with Facebook, the iTunes/Apple content distribution system also provides an excellent case study of how third parties effectively have complete control over user data. As users invest more time, money, and more of their own content into such systems, the harder it is to switch to a competing system or quit altogether. Like Facebook, the Apple/iTunes model prevents data portability and forces users to stick with Apple products even if better products exist. Since users cannot move their purchased apps from one platform to another, they are forced to stick with Apple. To return to the Facebook analogy, Diaspora is billed as a completely open source and distributed social networking system. This social networking service could be argued as being “better” than Facebook, but lock-in will keep users on Facebook. There’s no way for Facebook users to export their friend lists, photos, and wall posts to Diaspora, so everyone will just stay on Facebook.
Any Solutions?
There aren’t really any clear cut solutions to this increasing dependence on third party web services. The best move is to decrease reliability on such third parties. I’ve tried running my own mail server, but outgoing email is blocked by my ISP in fear that I’m a spam relay. Downloading mail with a client is an option so at least I have copies on my own computer of everything I’ve sent and received in case Gmail were to go down. With respect to privacy, I’ve pretty much assumed that everything I post on the internet will be available to everyone, regardless of privacy controls. Anything I don’t want out there, I don’t post. To maintain at least some control over my own data, I host my own blog and ensure that I have a copy of everything I write and submit to sites like Facebook, Google Docs, and Dropbox. My guess is that as the internet evolves, and especially with the new and annoying “cloud computing” buzzword, this reliance on third parties is only going to become greater.
Windows 7 vs. Ubuntu 10.04
A few years ago, I was simultaneously running machines with OS X, Windows XP, and Linux. After giving up PC gaming and my Macbook started aging, I switched to Linux exclusively, since it had nearly everything I needed for school/work. I did however, keep a Windows XP partition on my laptop for PowerPoint presentations since I find Open Office to be seriously lacking. Using Linux almost exclusively worked pretty well for the last couple years and I managed never to have touched Windows Vista.
Since the release of Windows 7, I’ve heard plenty of good reviews about this latest Windows version and I decided to give it a try. A month ago, I installed it on my MSI netbook so I could travel lightweight and give a paper presentation using PowerPoint. Shortly thereafter, Ubuntu released its latest version into the wild and after using both Windows and Linux for about a month, I’ve been able to come up with some strong and weak points on both. Some of my comments apply to Windows and Linux in general and not just to these latest versions or distributions.
Windows 7
Pros
- A solid UI. I’m a real fan of the Aero theme, system fonts, and improved start menu. The taskbar really takes the cake by using icons and clustering multiple instances of the same program. Hovering over the taskbar gives a cool preview of each open window.
- Fast. My netbook with Windows 7 feels just as responsive as it did when it ran Linux. Boot times are a little slower, however.
- Robustness. I had no difficulty with the Windows 7 install on my netbook and Microsoft even provides a Windows 7 CD to USB image utility for netbooks. Unlike my Ubuntu experience, there aren’t any weird hacks to go through in order to get your display or wireless connection working correctly following a fresh install. Furthermore, I haven’t encountered any system crashes and Windows seems to keep any malfunctioning program from taking down the whole system.
- Good hardware support. I plug in a camera and it’s automatically recognized and drivers are installed from the internet. I plug in an external monitor or projector and the correct model is detected and my desktop is extended on to it with the correct resolution. It’s great for presentations since there isn’t much fiddling with the projector or Control Panel settings to get everything looking good.
- Software availability. Everything has a Windows version, even most open source software. I find that most developers put more effort into Windows versions since that’s what most people are running. For example, I’ve had fewer crashes and slowdowns with the Windows versions of Firefox and Skype. The Windows version of Skype is also much more polished than its Linux counterpart. Furthermore, many software programs are only available on Windows. MS Office, despite its incredible price tag, is still far superior to Open Office, and of course, only runs on Windows.
- Games. Most of the latest AAA titles are available for Windows, a few might be available for Mac, and I’ve heard of only one or two released right off the bat for Linux. If you’re into PC gaming, Windows is the only way to go.
Cons
- Lack of a centralized software repository. This makes it a real pain to download and install software since I have to go to a separate website for each program I want to install, find the download page, and click through a bunch of installation dialogs. Even worse is that nearly every Windows program I install runs a background process on startup that constantly checks for updates and bogs down my system. Also because of this lack of a centralized repository, programs inconsistently install themselves in many different places.
- Difficult to configure system settings. The Control Panel is a real maze of links, buttons, and dialogs which are dumbed down at the highest level and utterly confusing once I drill down into specific settings. Some settings can’t even be accessed with the Control Panel: for example, I still find myself using msconfig.exe to remove unwanted startup items.
- Windows Update is still very intrusive. A large number of updates require me to reboot and will display a nag timer forcing me to do so. I really don’t like the OS to get in the way and nag at me. Some of the system updates take quite awhile to install and can bring my system to a crawl.
- Libraries. This feature, which wasn’t in XP, is similar to Unix symlinks. A library clusters together files and folders from several locations in the filesystem, making it unclear where the files are really located. I would prefer that all my music, movies, or PowerPoint slideshows be stored in a single location in the directory structure such that I can easily back everything up or find something via Windows Explorer. Windows seems to want you to not have any knowledge about its directory structure and instead rely on searches and libraries.
- Developer Tools. This is the exception to the software availability and quality rule. I’ve been using Eclipse for Linux and Windows and it works well enough on both platforms with plugins for Subversion and LaTeX editing. However, other tools such as a basic text editor, LaTeX compiler, and command line tools such as make are either lacking or nonexistent. I find it much easier to work with the command line than a GUI when creating plots with Gnuplot and documents with LaTeX. I can quickly switch from one thing to the next without clicking through a whole pile of menus and dialogs.
Ubuntu 10.04
Pros
- A centralized software repository. This is the main reason I like Debian and its variants so much. “apt-get install” will give me any program I want and provide automatic updates. Removal is just as easy.
- Fast boot times. On my 3 year old laptop, Ubuntu is up and running in 30 seconds or less from the moment I hit the power button.
- Easy to configure and control. Adjusting a system setting is easily performed from a GUI tool or from the command line. Configurations are stored in well documented text files as opposed to the nasty Windows Registry. It’s really easy to track down where a program’s install directory is located and tweak something.
- A customizable UI. The sheer number of themes available is astounding, with Compiz providing some really cool desktop visual effects that rivals anything Windows has to offer.
- Enthusiastic user base (support). I’ve found that tons other Linux enthusiasts are more than willing to help with problems on message boards and websites. For things I’ve had trouble with, a quick google search or message board post will return tons of answers with other people who had the exact same problem and had already solved it. With Windows issues, answers seem a lot more difficult to come by and the user base isn’t nearly as friendly.
- Developer Tools. Just about everything under the sun is readily available for developers in Linux, including a plethora of compilers, text editors, and command line tools. Working from the command line makes things a snap compared to painstakingly navigating through different dialogs and menus.
Cons
- New software versions take time to be added to the repository. For example, Firefox 3.6 has been out for months but was only recently included in the 10.04 Lucid Lynx release. Prior to that, I had to compile and install Firefox 3.6 from source.
- Installation headaches still persist. With every Ubuntu release, something doesn’t work post-install. With 10.04, it was my video drivers. During the upgrade process from 9.10, the installer whined about my video drivers and supposedly aborted the install. Upon rebooting my computer, however, it was clear that the install had not aborted and my display was completely messed up. After rebooting again, Ubuntu downloaded and installed the required video drivers automatically. Also, Ubuntu now tries on boot to mount a remote drive in my /etc/fstab for which I don’t have a saved key, halting the boot process until I manually override the mounting process.
- Software quality and robustness. Productivity software, such as Open Office, isn’t nearly as capable or as featureful as Microsoft Office. I’ve had trouble with Flash causing browser crashes and other programs crashing all on their own which run stably in Windows. I’ve had a heck of a time figuring out why some fonts are rendered terribly and look blurry in some programs, among other things. More effort should be placed on creating polished products in order for open source software to really take off.
- Lacking hardware support. This goes with the above bullet: I plug in an external monitor or projector and I still have to fidget with resolutions and positioning to get everything to work. Suspending to disk often borks the external monitor configuration and then I have to do it all over again.
In all, I can’t say that either the latest Windows or Linux versions are better. Windows provides a more robust and polished solution, while Linux gives more power and control to its users. I find Linux to be a better choice for development, but Windows is the clear winner for gaming. Both Windows 7 and Ubuntu 10.04 run reasonably fast — Windows 7 does quite well on my netbook, but Ubuntu clearly takes the cake with boot times. Until open source software takes quality up a notch and Windows provides a better development environment, I’ll probably be dual booting, running virtual machines, or using multiple computers with both operating systems.
Freedom or Stability?
Windows and Mac users can download and install the newest Firefox version with a couple of mouse clicks. With Ubuntu Linux, however, no Firefox 3.6 is available in the Canonical package repository. Even worse, none of the developers plan to add any new Firefox versions to the repository until the next Ubuntu release. So, I attempted to install precompiled versions from the Mozilla website and the Ubuntu Firefox development build repository, but both installs really messed up the fonts, making them blurry and hard to read.
I tried desperately to fix the fonts, summoning the help of the Ubuntu forums. I tried editing font rendering settings in my local .fonts.conf. I deleted the font cache and reconfigured fontconfig. I tried adjusting a font quality parameter in Firefox’s about:config. For some forums posters, these solutions worked. For me, nothing seemed to help. Finally, I was able to get Firefox 3.6 installed with normal fonts by downloading and compiling the source code and installing the binaries compiled on my own system.
I’m not the only one who is frustrated by this. This was probably the first time I’ve resorted to compiling a third party application from source since first using Ubuntu and Debian in 2006. Normally, it’s just apt-get install whatever program you want. The package manager automatically updates everything and keeps out of my way, rarely nagging to reboot unless the kernel was updated. The package repository was one of the main reasons I switched to Linux in the first place: an easy, single step way to install anything and keep it up to date. No hunting for a download website somewhere on the internet or clicking through a bunch of dialogs in an install wizard.
With such lag before new third party applications get added to the Ubuntu software repository, plenty argue that Linux isn’t ready for the mainstream. I agree completely. Most people will have to go through similar steps as I to get many of the latest third party applications installed, and it can be a real pain. However, in Linux, I am free (as in speech) to customize or rewrite any part of the operating system and share my changes with others. It also gives me a free (as in beer), top notch development environment for my work. The problem is that such freedom comes at a cost: tinkering to get everything to work correctly. Every time I’ve upgraded to the latest Ubuntu version, something doesn’t work and has to be fixed. In another example, I recently installed the netbook remix version on my netbook and was rewarded by a flickering screen, which was fixed with a BIOS update.
Mainstream users just don’t want to be faced with flickering screens and BIOS updates, they want something that just works. Consequently, they are willing to give up some of that freedom (as in speech and beer) to have a device that boots normally and doesn’t have font rendering issues when they install the latest version of a program. Such users are better off with an Apple, and indeed Apple charges them a price in terms of money and control.
The iPad has launched a storm of controversy over its lack of user control. Essentially, the device is a large iPhone, except there is no phone. All applications must be purchased from the Apple-controlled App Store. The real question is: do mainstream users really need fine-grained control over their devices? One comment on a Slashdot post really makes an interesting argument:
What has choice done? It’s given us the chaos of spam, malware, worms etc… The average consumer should get a locked down device such as what Apple are proposing, a limited device with a closed market. And you do realise this is really no different to a games console. Full blown computers should be reserved for those of us who know how to manage them responsibly…Computers as they are today are simply too complex and difficult to manage for the average consumer, so you either give them something simple or you take the management out of their hands.
Combined with the “Linux is not for mainstream” argument, this really makes the case that perhaps devices that work well but allow little user freedom may be the best for most people. Most of the time, it’s the best choice for me. I’ve got a phone, media player, GPS device, and others that I want to just work and perform a very specific function. In these cases, I would rather they perform their jobs reliably than be extensively customizable. However, I do think that the option to exercise greater control should be there for those who want it, no matter how few. In the case of PCs, I’ll take that option, stick to Linux, and keep compiling from source when I have to.
Quotes of the week…
Instead of picking a topic and writing a lengthy thesis, here are three quotes/stories that really got me going in the past week:
Windows Bug Discovered
A Slashdot thread discussed a security bug that affects all Windows versions released within the past 17 years. One of the commenters really cracked me up:
Every time I read about one of these long-undiscovered instant pwn bugs, I always have to wonder if there’s someone sitting deep underground in an NSA computer center saying “Well shit, looks like we’ll not be using that exploit anymore.”
Is this a hole nobody knew about or a hole nobody but the people who knew about it knew about, and those people weren’t talking?
Obama on Scott Brown election
The election of Scott Brown really caused a stir in political circles, prompting a comment from Obama:
The same thing that swept Scott Brown into office swept me into office. People are angry, and they’re frustrated. Not just because of what’s happened in the last year or two years, but what’s happened over the last eight years.
Accountability much? Whatever happened to “The buck stops here?” I’m sure there will be more blaming Bush in tonight’s State of the Union. If more people took responsibility for their own actions, including the president, maybe the current political and economic climate wouldn’t be such a mess.
Budget Proposal Halts Return to the Moon
A White House budget request effectively axes the Constellation program, with a Slashdot commenter reacting:
So unless Congress steps in (which isn’t unlikely), Obama will be the President that ended America as a space-faring nation.
This comes on the heels of India’s announcement proposing a manned space mission in 2016. Instead, the Obama administration wishes to focus on terrestrial science. Yet another step backwards.
Going Mobile: Network Neutrality
The traditional approach for implementing solutions in wireless sensor networks is to use academically designed sensor motes, which provide an open hardware and software platform. Such devices have been good for addressing fundamental problems, like radio irregularity, routing, data aggregation, and power savings, all of which require fine-grained control (open source) over the software and hardware. While sensor motes provide a good proof of concept solution to some problems, more practical solutions are needed that are more attention-grabbing than a collection of weak, low power devices with limited sensing capabilities. Basically, there aren’t a whole lot of applications for sensor motes that would be useful to most people. A more recent approach is to use cell phones, which are increasingly becoming equipped with GPS, accelerometers, and microphones, providing a platform for interesting and practical wireless sensor solutions. However, the hardware and software of most cell phones are extremely restrictive, clamped down by manufacturers and wireless providers, effectively limiting the research possibilities. For example, one can’t just perform a clear channel assessment using a cell phone’s WiFi radio without less restrictive or open source drivers (even with Android). Such restrictiveness is hindering improvements in mobile devices and many of these improvements would be welcomed by everyday consumers.
Like landline phones, Internet users will eventually drop wired ISP connections in favor of wireless. This shift towards mobile and ubiquitous computing emphasizes that wireless infrastructure and usage policies will be critical in the coming years. With few exceptions, ISPs have followed the principles of network neutrality with respect to wired networks, permitting wired customers to use any device with any software using any communication protocol. However, such openness is not reflected in wireless networks with ISPs placing heavy restrictions on devices, software, and means of communication. To ensure competitive pricing, hardware innovations, exciting software applications, and available bandwidth for the surge in wireless traffic, wireless providers must follow the principles of network neutrality. Since wireless providers are hesitant do do so, the FCC’s decision to enforce network neutrality is a step in the right direction. The enforcement of the FCC’s network neutrality principles will allow researchers to push mobile computing to new and exciting levels and will allow consumers to get more functionality at lower prices.
The openness of the wired Internet has seldom been encroached upon by ISPs and rarely regulated by government, making the Internet the world that it is today. This freedom has been defined by the FCC’s four principles of network neutrality:
- A user can access any content over the network. All who access the Internet are provided access to everything on the Internet, whether it be an AP news report or the Unabomber Manifesto. No ISP restricts content: everything is available, even if it may be morally objectionable or illegal.
- A user can run any application or use any service over the network. Anyone can use any web service or application (Google, Mapquest, Facebook) without restriction from an ISP. No ISP prevents users from making Skype calls even if that ISP also sells landline telephone service.
- A user can connect any device to the network, given it does no harm. An Internet user can connect with any hardware, whether it be with a ten year old piece of junk running Linux or with a $10,000 top-of-the-line quad core processor running the latest Windows 7 beta. No ISP restricts a user’s Internet access because his or her computer is a piece of junk. Nor do ISPs force users to connect only with proprietary computers sold by the ISP.
- Competition among network, content, and application providers. A user is open to choose from one of several ISPs (if more than one are even available), and also has choice over competing web services and content providers.
This freedom has not always been maintained, even with the wired Internet. Two years ago, Comcast deliberately throttled the bandwidth of peer-to-peer protocols, limiting the upload and download speed of file sharing applications. With peer-to-peer using customers enraged over this finding, the FCC forced Comcast to abandon this policy. Other than this incident and a few others, the Internet has always been delivered equally to all who have access.
Unfortunately, such open policies of the wired Internet are not followed by wireless providers. From the very birth of cell phones, wireless providers have controlled everything:
- Unrestricted content. Wireless providers block (through restricted software) bandwidth-heavy content, such as streaming videos, voice/video communication, as well as file sharing. Such restrictions are in place to limit or prevent wireless network congestion. Improvements in wireless infrastructure could alleviate such congestion, but wireless providers have decided to restrict, rather than improve.
- Use of any application or service. Nearly all providers restrict the operating system and applications available on connecting mobile devices. Apple blocks the use of Skype when the phone is not connected to a WiFi network. Similarly, the Google Voice application was also removed by Apple and AT&T. Both applications provide features that could be seen as subversive to standard cellular voice calls. Instead of providing competing applications (maybe with better features), the ISP and application providers just block any competition.
- Connection of any device. Verizon’s network may be good, but their phones are terrible. A customer cannot just build their own tricked out phone and connect it to Verizon’s network. Instead, users are forced to choose from a handful of phones with menial features (only sold by Verizon, of course).
- Competition. Since content, applications, and hardware are restricted on most wireless networks, competition is limited. Only a handful of wireless providers offer large coverage areas, especially for data communication. Since the United States pays more for wireless than any other western country, it is clear that less restriction would provide more options and more competition for consumers.
Despite the crackdown on allowable hardware, software, and access, wireless executives somehow manage to argue that their industry is “perhaps the most competitive consumer market in America.” While unregulated competition would be great for consumers in terms of increasing wireless freedom, there simply isn’t enough competition to go around. There are only four major carriers in the United States, effectively forming a cartel that can set prices artificially high and extensively limit consumer freedom. With barriers to entry so high (infrastructure), few new carriers are likely to emerge. In cases like these, government intervention is the only solution. Fortunately, the FCC is investigating the lack of competition in the wireless market with respect to insane billing rules and lack of consumer freedom in comparison to the wired Internet. Of course, their latest decision to enforce network neutrality will also provide a strong push.
The end result should allow anyone to build their own phone, install a custom operating system, and connect it to the wireless provider of their choice without issue. Such a user should be allowed unrestricted access to the entire Internet without throttling or restriction of streaming video, large file downloads, or VoIP calls. Ultimately, text messaging and voice calls will be merged into wireless data plans, removing such unreal and confusing costs like $.25 to send a 160 byte message or “anytime” minutes, which are anything but anytime. Unrestricted hardware, software, and access will bring increased competition among existing wireless providers, fostering the development of better mobile hardware and cool applications.
Fixing the frustrations of the digital nomad
Current computing technology consists of a mishmash of devices, ranging in size, portability, usability, and design lifetime. Users are tied to their desks no longer: the future lies in mobile devices, and improvements to increase mobility and usability are key in the coming years. Without the following improvements, I think most users’ computing experience will become very frustrating. I’m hoping we’ll see:
A holistic computing solution
Everyone splits their computing time between a whole pile of devices: cell phones, media players, laptops, netbooks, desktops, and gaming consoles. Even typical cable TV boxes have a hard drive and user interface. The purposes and capabilities of such devices is becoming increasingly diverse and will probably continue to do so in the short term. However, it’s becoming a real pain to use a standalone device for a different task. Carry a cell phone for voice and text messages. Carry a laptop or netbook for working on the go. Carry a media player to listen to music. When at home, many people switch from a laptop to a separate desktop PC. It would be great to see some consolidation in order to reduce frustration with dragging around multiple devices and learning the quirks of each.
Since most people aren’t running weather prediction simulations, a single small mobile device would be sufficient for most people’s computing needs. Ideally, something the size of a cell phone would combine the functionalities of a phone, camera, media player, laptop/netbook PC, and even desktop PC. No longer would people with multiple devices need to synchronize information or become familiar with multiple interfaces. A single device would provide a user with most of the computing power and capability that he or she would need without the hassle of dragging around a separate phone, media player, and laptop. The device would be designed such that it could easily support and interface with different user input and output methods.
Improved user interfaces
Improved interfaces in mobile devices would make for a better user experience and improve productivity. With multiple gadgets to haul around, each comes with a different interface with varying levels of usability. For the most part, the smaller the device, the worse the user experience becomes. A desktop computer with a keyboard, mouse, and giant monitor provides a solid experience for most, with both ease of input and output. A netbook, however, may satisfy a user’s computing needs, but may cramp usability and productivity with its tiny screen and uncomfortable keyboard. Even worse, web browsing and writing emails or text messages on some cell phones can be nearly impossible. Personally, my experience with multi-touch phones has been horrible, since most of the time the phone selects something other than what I intended. Rethinking and improving the physical and software interfaces would permit a shift to a cell phone-sized holistic computing device.
Improvements to both physical and software interfaces would provide huge benefits for the end user. With respect to physical interfaces, improving multi-touch surfaces would be a big step in the right direction. Input methods that are simple and accurate would make phone calls, text messaging, and web browsing on mobile devices much more enjoyable. Output methods should extend beyond a tiny three inch screen, such as a wearable HUD or projector similar to that used in MIT’s SixthSense. With regards to software interfaces, most cell phone operating systems provide horrible user interfaces which make the simplest tasks a real pain. Most of these software designs inherit from heavyweight PC interfaces where input is made easy with keyboard and mouse. Mobile developers should focus on increasing usability by making tasks require the fewest amount of user inputs possible.
Behavior and activity recognition
Computing systems of tomorrow could predict a user’s intentions and act upon these predictions. With the introduction of accelerometers, GPS receivers, light sensors, cameras, and microphones in cell phones, plenty of research has provided ways to recognize user behavior and activities. Such research can help provide an augmented reality for users, pointing out suggestions as to what a user could do based on his or her surroundings, current activity and learned preferences and behavior. For example, a user traveling in an unfamiliar city could get instant suggestions as to where to eat when he or she normally takes a meal, with a mobile device providing directions to restaraunts that match the kinds of foods the user normally eats. A HUD would allow the device to paint a path directly on the streets to take without the user staring down at his or her phone. A device could automatically perform Internet searches and return data relevant to what a user is doing, whether it be retrieving a weather report before a user heads to the beach or providing real-time flight delay information as a user drives to the airport. Such intelligent systems could interact with the physical world and turn on the lights or adjust the temperature at a user’s home before he or she arrives. Also, behavioral and activity recognition would eliminate the need for user-generated Twitter and Facebook posts, performing automatic updates whenever a user changes activities or does something unusual.
Better inter-device collaboration
Figuring out how to get cell phone pictures off the phone and onto a computer can be a monumental task. It’s even more enjoyable to get a projector to correctly display a presentation on a laptop. Nearly every slideshow presentation I’ve witnessed, in classes and in conferences requires each presenter to wage war with his or her laptop and the projector to get the presentation to display properly. Improving inter-device communication would make everyday computing more seamless and a lot less frustrating. For example, a slideshow presentation could be loaded on a mobile device and a user could walk into a room with a projector, with the mobile device automatically connecting wirelessly to the projector and displaying the presentation. There would be no cables to plug in, no display settings to modify, and no buttons and inputs to fidget with on the projector. Synchronizing and moving data between different devices stands to gain significant improvement, for people are constantly upgrading their cell phones and laptops as well as sharing their data with others.
Longer design lifetimes
I’m guessing I’m not the only one with a pile of old hardware that’s worn out from too much use or discarded due to obsolescence. More robust devices with longer expected lifetimes would reduce the pile of useless junk in the closet. This would be especially helpful for mobile devices, which often wind up in mud puddles, toilets, or under someone’s steel-toed boot. Modular construction would allow for periodic upgrades without throwing away the whole device. An effort towards longer lifetimes and upgradeability would also significantly cut down on the amount of toxic e-waste.
Longer battery life
Most cell phones don’t last past a couple days of standby or two hours of talk time. Most laptops don’t make it past three or four hours. With an increased focus towards mobile and ubiquitous computing, improvements in battery technology, power savings, and battery recharging would do wonders. Apple has a new battery design in its latest laptops that double battery life, but more strides in this direction are needed. Efforts on power-conscious radio communication and CPU utilization will contribute to power savings through better software. Lastly, harnessing available energy sources such as motion, body heat, and the sun will also allow mobile devices to run unplugged for longer periods.
In general, these issues are what I think mobile computing needs in order to really take off. The current experience is haphazard and lacking, requiring a mobile user to carry multiple devices with poor interfaces and short battery life. With future applications, mobile devices will do a lot more than allow phone calls, web browsing, and text messaging. They will further the integration of the cyber and the physical world, helping a user interact with the environment and the Internet in ways currently unimaginable.
Rise of the Machines? I think not.
Using machine learning in the realm of wireless sensor networks, I have been able to improve sensor node localization and provide event detection. Since I found the concepts of machine learning interesting, my adviser provided me with a book to get an overview: Machine Learning, written by Tom Mitchell of Carnegie Mellon. Most machine learning techniques are equivalent to function approximation and most also require a significant amount of human intervention to work properly. A machine learning model can be trained to take a set of inputs (such as sensor readings) and provide an output (a tank is hauling butt towards my base). However, the model has to be trained to know what the correct outputs are (tank is present or not present), so a human must provide a limited set of training data where the correct output is known.
Given the state of the art in machine learning, there is no way for an AI to learn on its own. There is reinforcement learning, but even in this case a human must decide the conditions and the amount of a reward or penalty for each AI decision or output. This is why AI in games is terrible: when there are a large number of non-deterministic game states and a large number of non-deterministic actions to take, it is almost impossible to determine the correct action to take at every decision point. This means that it is difficult or impossible to provide the AI with labeled ground truth or a reward for training. More to the point, labeling each output with the correct value would be a real headache. Instead, game developers resort to a rule-based system that still has trouble covering every possible scenario. As a result, NPC characters still wind up doing something weird, like running into walls.
I’ve been working with this stuff for awhile, realizing its capabilities and especially its limitations. Then, this weekend I see a headline reading: “Scientists Worry Machines May Outsmart Man.” Overblown media hype at its best. The article concerns a conference on machine learning attended by the aforementioned Tom Mitchell and futurist Ray Kurzweil. From what I gather, the conference dealt with mostly philosophical issues with respect to advancing technology and its integration with everyday life. There wasn’t much about strong AI taking over the world, yet it was plastered all over the news that a Skynet-esque entity would rise from the Internet and doom us all. In some ways, simpler systems have already taken over our lives: GPS tells us where to drive, automated tools read MRI scans and provide diagnoses, and viruses wreak havoc on our personal computers. However, strong AI has quite a ways to go, with most machine learning research peaking decades ago. As one Slashdot commenter on the NYT article writes:
Any computer scientist who is worried about AI taking over no longer deserves to be referred to as a computer scientist. The state of “artifiical intelligence” can be best described as “a pipe dream.”
All of this comes on the heels of a TED talk on the development of a brain simulator. The speaker indicates his current brain “implementation” is running on a 10,000 core Blue Gene system. The article gives few details, but it sounds like a large scale artificial neural network, which still needs supervised training data to learn properly. 10,000 nodes is still way too small, since the average human brain has 100 billion neurons with 7,000 connections each. Maybe in ten years the requisite computing horsepower will be in place, but I’m guessing the algorithms and the intelligence will not.
In a similar light, a team of scientists recently used DNA computing to solve the NP-Complete Hamiltonian Path problem. Instead of using some artificial construct or model, billions of DNA sequences, each representing a possible path, were randomly constructed such that those having a correct solution would glow a different color. While massive parallelism makes this a relatively fast solution to an NP-Complete problem, this approach really isn’t a doomsday AI either.
While specific solutions continue to be discovered for our technological problems, development of strong AI (and the development of Skynet) will sit on the back burner. Until then (and it’ll be awhile), everyone can take off their tinfoil hats.
Equipment Failure
My aging desktop PC is starting to come apart: today is the first time I have ever heard the click of death. I had always imagined it would sound like the disengaging of the head whenever I shut down the computer. In the middle of reading a research paper, I was interrupted by a violent, pounding racket that came screaming from the case. It was so loud that for a few seconds, I was actually afraid my computer would explode or catch fire.
Fortunately, the drive was mostly unused and had nothing really useful in it, while most everything remained safe on the primary WD Raptor. The really important stuff is already backed up on my network drive or on my department disk space, so if anything else blows up I’ll still be okay. When I removed the offending drive and tried to boot, only the power supply and CPU fans started spinning, leaving me with only a blank screen. Somehow I managed to have unseated the video card from its connection to the motherboard and after I reseated it, everything returned to normal.
Quite a few people try to salvage failing computer components, but I don’t think it’s worth it. The main idea is to patch stuff up just enough to transfer off any important data. There’s the legend of sticking the drive in the freezer overnight to get it working again. Someone even got their video card working by baking it in the oven. The fear of losing data is so great to some that there even exists a sound library of hard drive failures.
I don’t think my computer has much life left in it. I don’t want to switch to my laptop for everything since it only has a VGA output and no digital connection, rendering my monitor useless. I suppose I could get a docking station, but I can’t believe that Lenovo still makes laptops without digital outputs for external monitors. Despite buying it last year, it even came with a pile of serial ports, a dial-up modem, and a PCMCIA slot that nobody would ever use. A new desktop would be good for games but that was the purpose of buying an Xbox, and besides, high end desktops are still pretty expensive. Of course something beefy would also be good for my schoolwork, since the last two projects had implementations that were extremely CPU intensive.
Regardless, I think I’m running on borrowed time.
Removing Ubuntu annoyances
Here are a few Ubuntu 9.04 annoyances that I finally got around to addressing:
Constant “routine” disk checks on boot
Ubuntu 9.04 is lauded by critics for its improved boot times, and in most cases my machines running it boot to the login screen in less than 45 seconds. This is a solid improvement and it’s supposed to be under 10 seconds by the release of 10.04. The improved boot time in 9.04 is great: when I turn my computer on, I want to use it, not wait for an hour while the hard drive clicks and groans and the mouse cursor spins endlessly. It’s all well and good except that about every tenth boot takes forever thanks to an annoying disk checking routine. Are drive failures really that common that my drive has to be picked over by a fine-toothed comb every week? If so, a new storage technology is desperately needed. In the past 20 years or so, I’ve only had one memorable drive failure.
So, to fix the irritating disk checks on boot:
da1
sudo tune2fs -c 0 /dev/s
-c specifies the rate at which your disk is checked on boot and /dev/sda1 is your boot partition.
PC Speaker
Aside from the Caps Lock key, the PC speaker is an extremely annoying and useless “feature” of nearly every PC. Depending on your configuration, quite a few things can cause the PC speaker to beep, such as hitting backspace in a console when you haven’t typed anything. For some reason, when I shut down the computer using the Gnome shut down menu, I get several beeps from the PC speaker. This appears to be a bug. The best solution appears to be preventing the PC speaker module from loading at all. Create a blacklist file in /etc/modprobe.d called blacklist-custom.conf:
sudo gedit /etc/modprobe.d/blacklist-custom.conf
Then, add the following line to blacklist-custom.conf, save the file, and exit:
blacklist pcspkr
This will cause the “pcspkr” module not to load on boot. You can unload the module without rebooting by running the following in a terminal window:
sudo modprobe -r pcspkr
Update Manager Pop-under
Update nags are one of the worst “features” of many current operating systems. On Windows XP, I am spammed by a torrent of nag balloons forcing me to install updates and restart when the installation is complete. In OS X, a similar update manager jumps out at me in the dock until I deal with it. Until 9.04, Ubuntu had it right. In previous versions of Ubuntu, a small notification balloon would appear once and go away when new updates were available to install. I could either click on it to install the updates, or ignore it if I was in the middle of something. Now, what happens is about ten minutes after turning on my computer, which is right about the time I really get to working on something, the whole system grinds to a halt with the hard drive going nuts. Then, the Update Manager window opens underneath all the windows I have running, blinking and nagging at me to install whatever it found.
To go back to the original notification window functionality, run the following in a terminal window:
gconftool -s --type bool /apps/update-notifier/auto_launch false
Force Shutdown
When I click the “Shut Down” button to turn off my computer, I want it to turn off. No exceptions. Instead, if Firefox takes its merry time to save its session or something is running in the background (mounted drive through nfs or samba that won’t unmount), I get a nice “x is not responding. Logout anyway?” prompt. I don’t care if something isn’t responding: kill everything and shut down. To force shutdowns, edit your menu.lst:
sudo gedit /boot/grub/menu.lst
Scroll down and add “acpi=force noapic” to the kernel line of the default boot option:
title Ubuntu 9.04, kernel 2.6.28-11-generic
uuid f9d46e73-4aae-4203-ad97-93df87196054
kernel /boot/vmlinuz-2.6.28-11-generic root=UUID=... ro quiet splash acpi=force noapic
initrd /boot/initrd.img-2.6.28-11-generic
quiet
Recent Comments