Entries Tagged 'Ideas' ↓
March 21st, 2008 — Coding, Idea, Ideas

Problem: Font chooser are boxes cause more load as one has more fonts.
Font choosing options have barely evolved from the very first days of the Lisa where a user could choose between *gasp* five fonts. Now, there are thousands of fonts and the font chooser boxes look the same.
Solution: Visualize fonts spatially according to useful categoriztions
There exist various categorization methods for fonts: technical, quantitative, typographical, and subjective. Pick some within the list: measured reading speed (quantitative), bitmap versus stroke based (technical), or rankings (subjective); then map the fonts onto a sphere, fictional map (the isle of bitmaps), or plain old grid. That way, a user can pick a font from among other fonts that share the sameessential characteristics, e.g., slow reading speed.
Ah, but were ideas code.
January 3rd, 2008 — Coding, Idea, Ideas, Invention, Libraries

Problem: Regular Expressions should have more core types
Regular expressions recipes live on websites. When you want that U.S. telephone number regular expression, like “((?P<areacode>:\d{3})?\s{0,2}….“, you make this huge hash into your regular expressions.
What happens is that regular expressions become de facto lexers. We want them to recognize the various obvious forms of telephone numbers, like “(415) 555 – 5555” or “415.555.5555” and so on. We want the right answer, without rebuilding a recipe library from scratch each time.
Solution: Build an extended regular expression engine that knows the basic recipes.
It would be good to have a regular expression subclass that recognizes additional special characters and functionality. Previous extensions in regular expressions, notably in Perl, have added core building blocks such as less greedy patterns, named sub-expressions, repetition matching, and so on. These extensions would provide easy access to common parsing problems. I expect a good set of candidates would include:
- Dates, like “02-03-2007′ or “03-Feb-07″ or “February 3″.
- Times, like “2:45 a.m. GST” or “10:04:23GMT+3″
- Credit card numbers, with or without spaces.
- Floats, like “+2.234E20″, “3.1415″, and “42″.
- U.S. Phone numbers, like “(301) 342-3222 ext. 2432″
- U.S. Address Lines, like “City of Industry, MN 23423-1322″
- Names, like “Dr. Phillip P. R. Radnov IV, MD”
- Overseas Phone Numbers, like “+23 234 12333″
- Quoted Strings in CSV formats
So, you can see that I’m looking at a lot of common, odd, and exception prone text processing that straddles the line between lexing and parsing. Recognizing the half dozen forms of writing a number and then returning a number is typically done in a lexer by providing multiple rules. Alternately, it is done by the parser in an annoyingly repetitive manner. It should be done in a library further down, such as regular expressions. Too many applications use different recipes and cause both incompatibilities and bugs.
One method would be to have these as macros in a regular expression class, and provide a cannonical example for post parsing. Convenience functions would provide access by field, e.g.,
>>> x = re.match(“(?Date)\s+(?USPhone)”, “23-Feb-07 415.234.9902″)
>>> print x.group(1) # What string matched the Date?
02-23-2003 # See, we substitute in the easy to parse date.
>>> print re.areacode(2) # Areacode from match of group 2
415
It feels like work, but doable to make this run quickly. That is, for the convenience functions to run quickly. The hard part would be correctly reporting when a regular expression using extensions might give unexpected results. For example, zip code followed by a number is ambigious for “20423-1234.234″. Is that (“20423-1234″,”0.234″) or (“20423″, “-1234.234″)? That problem is hard in regular expressions now.
January 3rd, 2008 — Coding, Idea, Ideas


This is a cool feature I have yet to see implemented.
Problem: Scrabble is a good way to learn spelling, but people make words they don’t understand.
Scrabble style games encourage spelling by having people put together letters in odd combinations. For less strenuous play, most computer versions of the game dispense with the ‘challenge a misspelled word’ option. This leads to players to try to explore new words by trial and error. When a young player tries to put an ‘H’ after ‘PIT’, they discover a new word.
Solution: Provide definitions of the word inside the game.
Tool tips provide one simple solution. Hovering the cursor over a word would pop-up containing the definition of the word as helpfully provided by wiktionary. This provides another level of passive learning in the same experience.
For advanced players, one could play against someone speaking a different language. Words of both player’s languages would be accepted, and the tool-tips would provide spelling and pronunciation hints. While one could imagine triggering off videos, such as matching Colingo videos, most additional help would come from chatting with the other player.
Lots of possibilities.
December 28th, 2007 — Coding, Idea, Ideas

Problem: Installing and getting going on OLPC’s XO development takes time.
Getting the environment to work, getting the libraries installed and linked, and all the other cruft of systems administration takes time on the XO. Each application is written in Python and then ‘sugarized’. Then you move it over the XO, then you run it.
This can create a real hurdle for people who want to play with the OLPC.
Solution: Provide a premade virtual XO development environment.
What if we run a server that has an environment with an open Subversion version control system. When you check in a new file to your project, a build bot compiles it in the correct environment, runs pychecker and other tools, sugarizes, runs unit tests, and then makes available a binary, a report, and a screen-movie of the run.
So, good idea, bad idea?
December 27th, 2007 — Coding, Idea, Ideas, Invention, Products, Web

Problem: The One Laptop Per Child (OLPC) XO Laptop coud get viruses
The XO laptop will be a perfect breeding ground for viruses. The system is monolithic, with an expectation of identical hardware and operating systems being deployed across entire countries. IT support is expected to be non-existent. The machine networks heavily and promiscuously.
The primary defense against the spread of viruses is the built-in BitFrost security system. This assemblage uses virtual machines to restrict certain combinations of rights and attempts to prevent some of the higher harm viruses from occurring. One can expect many installations to disable any security measures found burdensome, as occurred with the rights based security in J2EE.
Solution: Make a bootable, read only, USB key to validate that all installed software is open source.
On the other hand, the OLPC has a few truly special features that allow effective anti-virus software to exist. All, or almost all, software on an OLPC is expected to be open source. It becomes reasonable to validate that all possible changes to configurations, applications installed, and binaries from a known list of ‘good’ applications. While “enumerating badness” is a doomed strategy, enumerating allowed systems is possible.
Consider a repository that keeps track of all known contributed applications and language packs in source form. An automated script builds these into sugarized files and keeps track of the file system effects from installing these onto virtual machines. The results are placed onto a self-booting USB key that boots up, examines the file system of the XO, and declares it to be clean or infected.
This does require some tricky programming, mostly in reducing the combinatorially exploding possible configurations into a linearly growing set of rules for allowable configurations. The problem is engineering, not requiring perfect implementation.
This feels like a good PhD Thesis for someone.
December 21st, 2007 — Coding, Idea, Ideas, Products, Web

Problem: Ubuntu troubleshooting is scattered about useless message boards
Solution: Rate messages for useful information
Ubuntu, the popular Linux distribution, discusses problems in message boards. Someone poses a problem and various people pose possible solutions. The total volume means that great posts detailing the actual way to set environment variables or handle XYZ Mark 32.42 video cards are lost. Users spend way too much time digging through chaff.
One simple solution is to rate the value of posts, ala Slashdot and others. As a user is browsing through the discussion forum, she can tag an answer as especially clear and well written. Alternately, she could tag a message as a question or otherwise content free. Later users might set a minimum threshold to search for well written explanations.
December 4th, 2007 — Idea, Ideas, Libraries, Politics

Problem: Empty Mall Slots and No Libraries
Solution: Instant Temporary Libraries
Malls need full storefronts to attract traffic; too many empty storefronts leads to fewer shoppers browsing through the mall. The mall can cease to be a destination. On the other hand, a mall wants to charge a premium for its retail space, stores want long term leases to capitalize on their investments, and so temporary dead mall space is a normal part of life. Less innovate malls content themselves with renting out the space to a fly-by-night “Christmas Store”.
Turn the mall space into a temporary library.
Overnight, a branch library could exist. Many of the usual library and business rules could be relaxed for this civic minded venture, including rent. The library could pop into existence with nothing more than a couple hundred paperback books, a simplistic check out system or even an honor system, and a box for returns. It would slightly more challenging than a bookmobile. If Internet were available, the library could also put up their entire catalog with a “click here to have it ready for you next visit” functionality such as found at my library. People would return to the mall in order to return library books and to pick up ordered library books. As long as you are there, might as well have lunch or do a little shopping.
This type of approach has worked in the past. Red Ink Studios existed, rent free, in Santana Row for some time with a clear understanding that they would vacate within thirty days of paying tenant being found. This generated more foot traffic to the rest of the outdoor mall than would another empty store front.
The most contentious issue opposing adoption is simple: it’s different. Neither property management nor public libraries are particularly innovative. It would be a good for libraries, with increased visibility and a location with new patrons. It would be good for malls with increased traffic to the mall and new customers that may normally shy away from malls.
Libraries reel from the rapid changes of the Internet, digital media, and our changing patterns of connectiveness. Many libraries could rise to these challenges.
November 8th, 2007 — Coding, Idea, Ideas, Products, Web

Problem: Good or Cheap Internet Hosting Companies
Solution: Good and Cheap Internet Hosting Companies
The cost of casual web hosting has dropped through the floor and one can expect it to remain there. If you need to host a dozen domains, downloading about 500 gigabytes of bandwidth each month, storing some hundreds of gigabytes of graphics, handling email accounts, and programming with a full Unix shell including tools like Subversion, Python, and MySQL, then that will set you back about $8 per month. DreamHost’s feature list (sign up here) would be unheard of five or ten years ago. With minor variations, so does everyone else. The catch? These servers are not 100% reliable; more like 98% reliable. I noticed DreamHost had about two or three days of outages or severely degraded performance last year.
Hold it, you think, we handle nearly 100% reliability with unreliable hard drives, unreliable communications channels, and even unreliable employees. Why can’t we handle nearly 100% reliability with unreliable web hosting? What can we do?
Redundant Arrays of Independent Service Providers
Tactic 0 — Sharing the Static Load
Web hosting companies slow down or run out of bandwidth quota far more often than actually crashing. Also, graphic files and other static data account for the bulk of the data served. One common tactic is to serve the the static files from several different domains. One can use an Apache plug-in to rewrite outgoing html, a periodic (cron) program to occasionally rewrite your images directory location, a client-side JavaScript routine to display from whichever server provided the picture fastest, mirroring downloads onto a new server, or several other methods. The effect is that loading a web page may load data from more than one domain.
Only the smaller main page needs to be served from the primary ISP when it is slow. All other data comes from faster, inexpensive ISPs. Similarly, a graphics intensive site, such as Girl Genius, could use this method to serve many terabytes of data for about a hundred dollars per month.
Tactic 1 — Dumb DNS Failover or Load Splitting
Another tactic that commonly works to failover to another site. Using various tricks with DNS or BGP, traffic to a downed site can route to a backup or traffic from different geographies can route to different servers. The site is mirrored, but the the URL remains the same.
Tactic 2 — Failover with Transactions Intact. Distributed ACID Transactions.
The hard part of failing over is making sure the important state is preserved when a site goes down. There are ways to do this, with varying degrees of bandwidth efficiency and latency. Each service would need to notify other servers in some scheme in order keep databases intact. Lots of trade-offs present themselves. It is doable, but requires a fair amount of custom work.
Summary
Getting the high availability out of these redundant ISPs is just work. More complex tactics require more engineering. The business model, as always, is to mask all of the complexity of these tactics so that the customer’s problem just “goes away”.
One could provide a service that set up all the failover options, signed up for the ISPs, wrote the scripts to maintain transaction state for a flat fee. Alternately, one could simply sell themselves as a “high availabilty, high transaction volume” service provider while actually running the service off a number of inexpensive ISPs.
There is money sitting there people. Go pick it up!
September 25th, 2007 — Idea, Ideas, Invention, Products

Problem: Constantly packing and unpacking your laptop, the power brick and chargers for your devices.
Solution: Modify a backpack to have the the chargers all plugged in and an easy to handle extension cord. Just plug in the whole backpack at the next coffee shop or airport.
This is a simple enough idea. Leave the bulky power brick in the back, have a place to stuff your phone where it charges, have an extra outlet right there if you have more things to plug in or need to sync your Palm. This may involve a wireless USB hub. Optimize for the time to sit down, plug into power, put your cell phone in the charger, pull out the laptop, and get to work.
September 13th, 2007 — Communication, Idea, Ideas, Society

Problem: The ear stops hearing some foreign language sounds unless trained young.
Solution: Train young people on all the foreign language sounds in a carefully constructed song.
One set of challenges in learning a language are the difficult sounds. A Russian speaker learning English agonizes over the ‘th’ and ‘w’ sounds. Learning German, everyone agonizes over the ‘ch’ in ‘Ich’. Learning most Asian languages triggers issues over recognizing tonal differences.
How about a song, reminiscent of “Frere Jacques” that carefully uses all these? Instead of telling the exact story, it could be one long multilingual story. For example imaging a story along these lines:
Harold was the happy boy,
He gave two sandwiches to a witch,
The witch said, “Thank you very much”,
And Harold’s world began to switch,
—
Harold flog nach Deutschland, (Harold flew to Germany)
….
And then to Russia, then to Israel, etc.
This allows the song to be song in round, to start in different countries, and allow for variations. The whole song would be pretty hard to sing, because of all the new words. When the child decides to learn a language as an adult, his or her ear will still be able to distinguish the specific sounds of the new language.
Does anyone have a list of all the difficult sounds in human languages?