Javascript and Google Gears, really?

Filed Under (Technology) by adam on 30-06-2008

Tagged Under : , ,

Slowly but surely desktop software is being replaced with Web based software. The Web browser is becoming a platform for more complex software applications - the window through which you do everything - not just browse the Web. Web based software (coupled with “cloudcomputing”) has many advantages such as, automatic updates, portability from one operating system to another, and centralized data storage. It has traditionally had its downsides as well, like security, network speed, and user interaction.

As computers get faster, and internet connections more pervasive, Web based applications are becoming more practical. All Web browsers need are a few more features like local storage and support for working offline to make them a viable environment for 80% of all software. The remaining 20% will require specialized user interfaces or hardware that will probably never be fully “Web based”.

Several technologies have been invented to add these features. For a while, it looked like Rich Internet Applications (”RIAs”, see Silverlight and Adobe Air) would win out as the next application platform. However, recently I’m becoming more convinced that a combination of AJAX and browser add-ons will win.

Just 6 years ago it was conventional wisdom that (at least within Microsoft) Web browsers had become just as complicated as they would ever. I remember a Microsoft employ saying “their may not be another version of IE after 6, I mean what else is there to do?” AJAX applications were too slow to really replace destop applications.

In its early days, Javascript was a pain to write and debug. However, Javascript has matured. There are many libraries now exist to improve cross-browser compatibility and facilitate high level programming concepts. For example:

Lastly,  Javascript (and JSON/XML) is an open standard that is not championed by any one particular company. This is not a technical advantage, but a cultural one. Javascript is pervasive and a safe (reluctant?) choice because it won’t be going away for a long time.

So, with these advances in mind, what exactly will the Javascript browser platform of the future look like? Here are the contenders:

  • Firefox + Google Gears
  • Safari (aka Webkit platform) with special features for client side storage and animation
  • Internet Explorer + What?

Microsoft is in trouble for a couple reasons. I’m not sure if Silverlight is meant give code running in IE access to the Operating System. Even if it is, IE is only supported on Windows.

It may be a bit premature to predict the end of most desktop applications, but it sure seems like those who have switched operating systems will recognize and speed up the trend.

Appendix

see also Yahoo’s BrowserPlus

Prosper.com defaults and lower interest rates

Filed Under (Investing) by adam on 29-06-2008

Tagged Under : , , , , , ,

I wrote previously about prosper.com defaults causing me to stop loaning money. Also, it looks like earnings have decreased for lenders by around 3-4% on Prosper’s built in portfolios. This is likely due to the federal reserve lowering rates on loans around the country, but could also be due to the high number of defaults on Prosper loans.

lower interest rates

I think Prosper is a fantastic concept, I hope they weather the current economic climate, find away to improve borrower screening, and get even tougher on debt collection!

Porta Party Mix

Filed Under (music) by adam on 28-06-2008

Tagged Under :


Mixwit

Playlist:

1. The Ting Tings - Great DJ
2. Dizzee Rascal feat. Calvin Harris - Dance_Wiv_Me
3. Weezer vs Nelly - Beverly Grillz (Edit)
4. The Wombats - Lost In The Post
5. Dead Kids - Fear and Fluoride
6. Art of Noise vs Rakim - Close to the soul (kozmikdj mashup)
7. Digital Rust - Bucky Done Gun
8. Kate Bush - Running Up That Hill (Datassette Remix)
9. Dizzee Rascal - Flex (Dave Spoon Mix)
10. 50 Cent vs. Chromeo - So Gansta In Da Club (DJ Weekend Mashup)
11. Coldplay - Clocks (Latin Version)
12. Tegan And Sara - Dancing In The Dark
13. Regina Spektor - Raindrops
14. Ladytron - Versus
15. Weezer - Pork and Beans
16. MGMT - Electric Feel (Justice Remix)
17. The Ting Tings - Great DJ (Calvin Harris Remix)

Special thanks to Songbird and Hypemachine

Yahoo SearchMonkey Apps

Filed Under (Semantic Web) by adam on 27-06-2008

Tagged Under : , , , , , , ,

Joshua Allen wrote an interesting post about how SearchMonkey is disruptive because it could enable semantic Web technologies. Basically the “Semantic Web” is a more meaningful internet (see my post from 2004 for a better description). Internet inhabitants have been trying unsuccessfully to bootstrap the semantic Web for a while. Google has the power to make it happen, but doing so would risk loosing their competitive advantage in Web search. If Google supported semantic Web formats like RDF, publishers would use it a lot more, and other search engines would have an easier time searching the Web.

SearchMonkey is interesting because it allows 3rd party developers to make use of Yahoo’s crawl of semantic data. This means the benefits of the index are shared without compromising Yahoo’s ownership of the index. The gamble is that Google won’t be able to keep pace with the 3rd party developers’ features, and that the features would be good enough to motivate publishers to provide feeds.

In the SearchMonkey architecture, publishers provide data (semantic information about what has traditionally been represented as text on their Web sites). App developers create Presentation Applications to match this data to search results (which is also semantically enhanced). So, if I search for “Coldplay” an Amazon search result could be enhanced with a Last.fm “listen now” link (or vice versa). The main point is that Yahoo search facilitates Coldplay being recognized as a band.

SearchMonkey Architecture

This seems to me like a good bet for Yahoo, if it isn’t too late for them as a business given their recent troubles. Assuming an audience of Yahoo searchers still exists, an app ecosystem like the Facebook developer ecosystem should develop trying to capture the users. Publishers will also be motivated Data Feed hosting will become just another part of SEO.

One last point is that this would be a great place for Evri (and Freebase) to plug in. Evri (still in private beta) has been criticized for not having a search box. This would be a great way to expose Evri’s semantic understanding of specific people when they show up in a Yahoo search result.

Watching YouTube and Hulu on your TV

Filed Under (Technology, Troubleshooting) by adam on 26-06-2008

Tagged Under : , , , , , , , ,

NEW YORK - MARCH 23:  Apple's new Apple TV advertisment is displayed  in an Apple store March 23, 2007 in New York City. Apple began shipping the Apple TV set-top device March 21, which wirelessly connects computers to televisions and retails for $299.  (Photo by Mario Tama/Getty Images)

Image by Getty Images via Daylife

I got this question from a friend the other day:

do you know if you can transmit the internet signal in a wireless network to your tv?  now we attach our laptop directly to the tv with a VGA adapter.  I want to avoid doing this and maybe buy and attach  some type of transciever to the television to access  the internet while sitting on the couch in our living room.

I am looking for a good answer to this also  I used to use my Xbox to stream recorded TV from a PC upstairs, but the video was always choppy over the wireless connection, and now it just plain doesn’t work because of some setup issue.

I found a few questionable products. I really doubt the video quality - in home wifi doesn’t have enough bandwidth to transmit HD video in realtime, it has to be cached on the set top box.

The only established products that I know of are AppleTV and Roku Netflix. But both of those lock you in to either Netflix or iTunes. ZeeVee looks promising (but wired and expensive).

Anyone out there know of other alternatives?

UPDATE: looks like there are some new developments with a Google Media Server Desktop Gadget. I’m also interested in the DLNA stuff. Not sure how it all works, still sounds hard to set up.

Stormtroopers vs. London cops

Filed Under (music) by adam on 23-06-2008

Tagged Under :

Link (via BoingBoing and Wonderland)

Finally a tag cloud I like

Filed Under (Fun, Uncategorized) by adam on 23-06-2008

Tagged Under : , ,

Usually I find tag clouds overwhelming + useless, but this one is more fun. This was  generated from my tags on delicious. Discovered via Paddy3118.

Translating c# to Ruby, Python, Java and Javascript

Filed Under (Programming) by adam on 21-06-2008

Tagged Under : , , ,

I created a Google spreadsheet to help me learn common phrases in Ruby and Python. This is an overly-ambitious project that I’ll probably never finish (I’ll have the function names learned faster than I update the spreadsheet). Anyone out there want to help? Add a comment below and I’ll ad you as a contributor to the spreadsheet.

Getting started with Python on Mac OS X Tiger

Filed Under (Programming) by adam on 19-06-2008

Tagged Under : ,

I upgraded Python 2.3 to Python 2.5 on my Macbook, and changed some symbolic links so that 2.5 is the default version when run from the command line. In backwards order, here is what I did.

Python is pre-installed on Mac OS X Tiger, but what version am I running and where is it?

Open a terminal window (bash command shell) and type “python”

$ python
Python 2.5.2 (r252:60911, Jun  1 2008, 16:53:35)
[GCC 4.0.1 (Apple Computer, Inc. build 5367)] on darwin

I’m running 2.5 now, but I wasn’t earlier. Ok, where is Python installed?

$ which python
/usr/bin/python

Is that the real location? No, it is a symbolic link.

$ ls -l /usr/bin/python*
lrwxr-xr-x   1 root  wheel      9 Jun 19 13:13 /usr/bin/python -> python2.5
lrwxr-xr-x   1 root  wheel     72 Oct 14  2006 /usr/bin/python2.3 -> ../../System/Library/Frameworks/Python.framework/Versions/2.3/bin/python
lrwxr-xr-x   1 root  wheel     82 Jun 19 13:15 /usr/bin/python2.5 -> /opt/local/var/macports/software/python25/2.5.2_2+darwin_8/opt/local/bin/python2.5

As you can see, I changed “python” to point to python2.5. Previously it pointed to python2.3.

Where can I get Python 2.5 for Mac OS X Tiger? I used macports.

$ port install python25

this will put it in /opt/local/var/macports

$ port location python25
Port python25 2.5.2_2+darwin_8 is installed as an image in:
/opt/local/var/macports/software/python25/2.5.2_2+darwin_8

Python Path and Module Basics

Filed Under (Programming) by adam on 19-06-2008

Tagged Under : , ,

I’m getting started with Python and Google App Engine. One of the first things I had to figure out was how Python handles paths and module names.
You can see what paths python is looking on with this command sequence:

 

$ python
['', '/opt/local/var/macports/software/python25/2.5.2_2+darwin_8/opt/local/lib/python25.zip', '/opt/local/var/macports/software/python25/2.5.2_2+darwin_8/opt/local/lib/python2.5', '/opt/local/var/macports/software/python25/2.5.2_2+darwin_8/opt/local/lib/python2.5/plat-darwin', '/opt/local/var/macports/software/python25/2.5.2_2+darwin_8/opt/local/lib/python2.5/plat-mac', '/opt/local/var/macports/software/python25/2.5.2_2+darwin_8/opt/local/lib/python2.5/plat-mac/lib-scriptpackages', '/opt/local/var/macports/software/python25/2.5.2_2+darwin_8/opt/local/lib/python2.5/lib-tk', '/opt/local/var/macports/software/python25/2.5.2_2+darwin_8/opt/local/lib/python2.5/lib-dynload', '/opt/local/var/macports/software/python25/2.5.2_2+darwin_8/opt/local/lib/python2.5/site-packages']
Python 2.5.2 (r252:60911, Jun  1 2008, 16:53:35)
[GCC 4.0.1 (Apple Computer, Inc. build 5367)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
>>> exit()

 

Inside a python script Modules are included with this syntax:
from google.appengine.ext.bulkload import constants
All that means is that python is going to look on the paths above for /google/appengine/ext/bulkload/constants.py
In my case, the script I was trying to run sets up the paths for a secondary main script with some code like this:

 

EXTRA_PATHS = [
DIR_PATH,
os.path.join(GOOGLE_PATH, 'lib', 'django'),
os.path.join(GOOGLE_PATH, 'lib', 'webob'),
os.path.join(GOOGLE_PATH, 'lib', 'yaml', 'lib'),
]
if __name__ == '__main__':
sys.path = EXTRA_PATHS + sys.path
script_path = os.path.join(DIR_PATH, BULKLOAD_CLIENT_PATH)
execfile(script_path, globals())

 

So, you can see here that sys.path is assignable and retained when calling other scripts.
I also learned that you can set the $PYTHONPATH environment variable to a list of paths, just like the normal $PATH variable. However, unlike Windows, you have “export” the environment variable.

 

$ PYTHONPATH=$PYTHONPATH:/include/this:/and/this
export $PYTHONPATH

 

The export command takes the local shell variable and makes it visible as a global variable (in this case to Python).