Thursday, August 27, 2009

Adobe, Flash is unsustainable

Flash doesn't work well on Linux. It's a well-known fact in both the Flash-development and Linux communities. When I try to load a Flash-based video in Firefox 3.1 on Ubuntu, the video has about a fifty-percent chance of working and a twenty-five-percent chance of freezing my browser. Any games I attempt to play are likely to never load, and the ones that load are likely to run slowly, look ugly, or freeze.

Not just Linux users are experiencing these problems. As Flash increases its compatibility and pervasiveness, backlash against its instability and slowness grows. Here's an excerpt from Engadget's review of HTC's new Flash-compatible smartphone:

Unfortunately, in our testing, we found the inclusion actually hurts operation of the phone more than it helps. When browsing to a site heavy on Flash (there are many), the browser loading times were abysmal. Furthermore, trying to view videos in-window produced choppy, nearly unwatchable results. You may have a better experience with lighter kinds of content, but in our opinion the main reason to introduce Flash into a mobile environment is to allow for broader media viewing options, and in the current state of this Flash player, you're not really going to get much mileage out of it.

The push against Flash can also be seen in PC market. Savvy users, tired of Flash slowing their browser and displaying obnoxious ads, are saying no to the Flash plug-in. Cutting-edge web developers, taking advantage of the major advancements in browser technology, are abandoning Flash in favor of embedded fonts and slick Javascript animations that are now compatible with modern browsers.

Adobe could repair these problems with more time or more money, but it has neither. If Adobe slows development on new Flash versions to focus on increasing its compatibility and stability, Microsoft's Silverlight will gain ground with new features. Adobe simply doesn't have enough money and resources to ensure good performance across the numerous platforms to which Flash is spreading.

I only see one way for Adobe to ensure acceptable performance on all platforms while expanding Flash's reach: release the Flash Player and compiler source code under an open-source license. Open-sourcing Flash would benefit Adobe in three ways:

  1. The cost to maintain Flash would go down. The developer community would help to identify and patch bugs, freeing up Adobe's Flash developers to work on the next version.
  2. Flash's performance and stability would improve. Many people would report bugs and contribute patches, and a few developers would spend hundreds of hours fixing Flash problems and making improvements. Additionally, users on non-major platforms such as Linux distros and smartphone OSs would help to test Flash more thoroughly.
  3. More people would use Flash and more people would develop Flash apps. Developers know that open-source projects are more long-lasting than proprietary platforms. Even if Adobe goes away, Flash will remain a viable platforms for interactive web apps. More users would trust the stability and security of Flash if they knew that thousands of people were working to make Flash stable and secure.

Adobe, Flash is too expensive to be maintained and developed by a single company. If you truly want Flash to be the universal platforms for highly-interactive web apps, you'll give it to its rightful owners: the users.

I'm not the first one to suggest that Adobe should release the Flash source code. See this open letter to Adobe for another take on the matter.

Friday, August 21, 2009

Help people regain speech

Every year, thousands of people around the world lose their ability to speak. Some are struck dumb by strokes, while others' voices are stolen by degenerative diseases such as ALS or muscular dystrophy. These people can regain their ability to communicate by using speech augmentation software or devices to speak for them. Unfortunately, the obscene prices of both the software and hardware prevent many people from communicating.

I want to solve this problem by developing an open-source speech-augmentation program. My goal is to create a cross-platform speaking program with both a symbol-based and text-based interface. I plan to write the program in Python with an emphasis on flexibility and extensibility. I plan to abstract both the input and output interfaces, allowing the program to be independent of both its text-to-speech engine and its GUI framework.

Consider this post a project announcement and a call to action. If you'd like to help people regain the ability to speak and you have experience with Python, interface design, text-to-speech, or accessibility, send me an email. I need all the help I can get.

Thursday, August 20, 2009

Pygame2 example game finished

Early this summer, when my Google Summer of Code proposal to the Pygame project was rejected, I told the coordinator that I would nonetheless contribute to the project over the summer. I planned on writing examples and tutorials for the Pygame2 multimedia library. Unfortunately, events conspired to prevent me from writing the examples. I had tremendous difficulty installing Pygame2 properly and no time to find the problems: I finally overcame my installation problems only two weeks ago.

Composite screenshot of all four skins Four graphical skins for your gaming pleasure!

However, I spent a great deal of time over the last week writing my first example for Pygame2. It's based on the demo distributed with the original Pygame, but I greatly expanded its scope. I tried to demonstrate as much of the library as I could, but I ended up using only a sliver of the library's functionality. The finished example demonstrates Surface handling, vector drawing with pygame2.sdlext.draw, text rendering with pygame2.sdlttf, image loading with pygame2.sdlimage, and sound effects with pygame2.sdlmixer. It's not an exhaustive demonstration of those concepts, but I think it's a good starting point for exploration of the library.

In addition to showing off the Pygame2 library, I tried to demonstrate best practices. I encapsulated the object instantiation and sprite drawing in external factories, allowing users with incomplete installations of Pygame2 to still see parts of the example. I only have to switch factories to drastically change the look of the game. Most importantly, I expunged the global variables from all the classes. The game still uses a couple long-life variables, but I eliminated the unnecessary ones.

If you'd like to see my uber-example in action, you can get it from its SVN repository or download it as a .tar.gz archive. If you have any trouble with the game, let me know.

Friday, August 14, 2009

Need app developers? Give them respect.

According to Engadget, both Microsoft and Sony are attempting to lure iPhone developers away from the platform to develop apps for the Zune HD and the PSPgo, respectively. Allegedly, Sony is just asking developers to convert, but Microsoft is offering cash to defecting developers.

However, I don't anticipate that either of these strategies will attract many high-quality developers. Switching platforms is a major change that requires a great deal of time and effort. More importantly, the developer has to believe that there's a future for the platform.

Nonetheless, I believe that both companies could foster development environments as fertile as the Apple's by dropping development barriers and treating developers with respect.

Break down development barriers

Many great app developers have never written an app. Some don't have the cash to buy Macs and pay $99 to get their developer certificates from Apple. Some don't consider the investment worth the money. Some don't know how to develop an app. Whatever the reason, there is a large pool of potential developers who have never made it over Apple's speed bumps.

Sony and Microsoft need to make it free and easy to develop an app for their platforms. The SDK should be free, open-source, and cross-platform. It should be completely self-contained, but it should also be compatible with a major IDE. It should contain a thorough tutorial that takes the new developer from project creation to final compilation.

When it comes time to publish an app, the developer should pay less than fifty dollars to make the app available for purchase and absolutely nothing from that point on. Developers should be able to set their own prices and the platform should charge < 30%. If an app is free, the developer should not be charged when it is downloaded.

Respect developers

Both Sony and Microsoft should capitalize on the current uproar about Apple's opaque and draconian app screening process by making their app screening as transparent and inclusive as possible. The application rules should be straightforward, comprehensive, and accessible to developers. Before the developer even downloads the SDK, he should be shown a summary of the rules.

Every developer whose app is rejected should receive a thorough and specific explanation. The app reviewer should say which rule the app broke, which part of the app broke the rule, and what can be done to fix the app. If the app store doesn't have the time to write these explanations, it's obviously rejecting too many apps.

Apple's iPhone development environment has its weaknesses, but to focus on luring away its developers with cash would be short-sighted. Sony and Microsoft must build their developer base with App Store cast-offs and new developers before they can offer the massive install base of the App Store. They need more than a just few money-motivated iPhone developers to launch their platforms.

Tuesday, August 11, 2009

Suggested reading for elected officials

Despite the politically charged name of this post, Welcome to Obscurity will remain a non-partisan blog. It just happens that my most recent idea relates to my elected officials.

How many times have you shared an article with your friends or followers? If you're like me, you've probably forwarded plenty of interesting stuff to your social network. On the other hand, how many times have you contacted one of your congressman? I've sent less than ten messages to my elected officials, and I consider myself relatively politically active.

Despite the massive improvement in communications technology, few people bother to communicate with their elected officials. And why should they? One person's suggestion is unlikely even to be considered. It takes a coordinated effort to make an impact on a powerful politician, and few people have the time or resources to gather support.

To solve this problem, I propose a website for people to suggest articles for their elected officials to read. A worried elector could use a website, bookmarklet, or browser extension to mark articles they believe should be read by their elected officials. He could send the article to a specific politician or to every politician responsible to the elector.

The first time an article is suggested to a politician, a page is created for him that contains a link to the article. As more and more articles are suggested, the system sorts the articles by their popularity and specificity. An article's popularity will be based on the number of people who have suggested it. An article's specificity, on the other hand, will be determined by the number of other people to whom the article has been suggested. If a voter suggests an article to every one of his politicians, that article will have a lower specificity than one that he forwarded to a specific politician.

A politician will be able to confirm his identity with the service and respond directly to the suggested articles or subscribe anonymously to the RSS feed of his reading material. The politician could set his suggestions to expire quickly if he has a large volume of them or stay on his page until he responds. Normal people could also subscribe to the RSS feeds of politicians to learn which political articles are popular.

What do you think? Is this idea a potential world-changer or an insignificant pebble thrown against a Mack truck?

Thursday, August 6, 2009

Universal scholarship application

It's hard to get money for college. I thought I had avoided the grab for cash by qualifying for Florida's comprehensive Bright Futures scholarship, but I recently discovered that my scholarship's funding was cut and I'm now liable for more than just the cost of my books. Now I have to devote some of my scarce and precious time to finding and applying to scholarships.

First, I have to find scholarships, sifting through pages of Google results to look for scholarships for which I'm eligible and capable of winning. Once I find some promising scholarships, I have to jump through their hoops, either filling out online forms or printing them out and faxing them in. Each essay prompt is slightly different, so each application requires a few modifications to my standard essay. When I'm done, I've lost several hours of my day to a few scholarships I'm not even sure I'll receive!

I've registered on, but half of the scholarships are restricted to high school students. The rest are large, national scholarships with big prizes and even bigger requirements. Whether the scholarship requires me to write a detailed essay on a long book or create a high-quality Youtube video, I'll be competing against thousands of students across the country. Unless I'm a genius writer or videographer, I would only be wasting my time and effort on a 1-in-100 shot.

To ease the scholarship application process for students, I propose a government-funded academic-achievement matching system. The network would be a universal platform for all students to get scholarships. The network would be linked to each state's educational database, and each student would claim his information when he became interested in applying for scholarships. Most vital info would be visible from the start, but the student would be able to block certain pieces of information. However, the network would emphasize the positive aspects of students' records over the negative.

If I was a student in this system, all my major info would appear automatically: homeschooled from fourth grade, standardized testing every year, 4.0 college GPA, etc. In addition, I could list my community service hours by simply sending my service acknowledgement letter to the scholarship network office for confirmation. Of course, the office would also confirm things like my family history and SAT and ACT scores.

When an organization wished to offer a scholarship, it would simply set the eligibility requirements and offer the scholarship to whichever students met the requirements best. If a scholarship required a specialized essay or test, the organizations could wait for interested students to apply (each student could see the scholarships available to him) or ask specific groups of students to apply. For example, a company asking for an artsy Youtube drama could invite students who listed "videography" as one of their interests. Any student could apply to any scholarship he was eligible for, but he would have to take the initiative.

Of course, there are a number of pitfalls a project would need to avoid: government bureaucracy, spamming, application padding, and privacy issues. The network would have to be private to protect the students, but it would also need to be accessible to interested organizations without too much red tape. It would be a difficult project, but it could actually save government money. Students who would be eligible for government aid would instead finance their education with private money.

I know there are a hundred problems with this plan, so please point them out in the comments section. Anybody want to check this one out?

Monday, August 3, 2009

Idea Library: Spread Linux by revitalizing slow computers

I create lots of ideas. I'll think up a plan to accomplish a goal or start a business, ponder it for a couple of days, think of a problem with the idea, and move on to the next idea. However, I occasionally develop an idea that stands up to my scrutiny.

Until now, I've summarized these ideas in a Remember the Milk to-do list, planning to implement them myself "after this assignment" or "once I finish this project". However, I've now realized I simply don't have time to work on all of them, so I'm sharing them with you.

I'll publish the ideas here with the tag "idea library" so that you can easily find them. My idea posts won't have the same quality as the rest of my posts, and it's possible that my ideas will be full of glaring oversights or obvious flaws. Nonetheless, I think that some of my ideas have real potential, even if I don't have the time or resources to implement them.

That's why I chose the tag "idea library": I wanted to give other people the chance to use my ideas. If you'd like to implement one, please contact me at [redacted] so that we can discuss terms. Because I won't publish ideas I can execute myself, I will probably give you any published idea you ask for. I'm publishing these ideas not to entertain you but to give you a chance to use them.

My first idea addresses a problem for the open source community: Windows has a stranglehold on the OS market. Far too many people have no idea that they can leave Windows without buying a new computer, and most of the people who are aware of Linux don't have the skill or incentive to install it.

I propose that the Linux community should offer to speed up people's slow, obsolete, or damaged Windows computers by installing Ubuntu (or another desktop-focused Linux distro). People will agree to risk their computers if the computers aren't usable.

A flyer on a bulletin board could promise to redeem old computers by dramatically reducing start-up and loading times, allowing quick web browsing and email access, and eliminating malware of all types. The customer could pay $20 for installation plus $10 for the recovery CD and $40 for data preservation (through dual-booting). Many people would gladly pay $20 to give their old computer another chance at usefulness.

I would charge that little because I need the Linux experience and I'd like to encourage the adoption of Linux.I would also write a quick tutorial to show the new users how to use the essential functions. Ideally, I would convince a computer repair shop to refer customers with hopelessly obsolete computers to me. I don't think this could be a money-making project, but I would enjoy the experience.

Obviously, you don't have to contact me to use this idea, but I would still appreciate a comment if you decide to try it.