I was pondering how Facebook could really answer it’s critics in a profound way that would really up-level the social fabric of the internet while also satisfying those that want ultimate control over their data. The basic premise of the solution would be to allow any node in the Open Graph to be redirected to a 3rd party developers server. From that point on, Facebook would then treat that node just as if they were a developer that current gets access to Facebook users.
Continue reading
How Facebook could open the Open Graph APIs
Posted in Technology 5 Comments
The ideal web application templating system
When a designer and a developer work together to create an HTML web application one of the biggest issues is how you translate their vision into code in a way that allows for iteration and flexibility when those designs change. Another issue is that while you are testing a design you would like it to be filled with actual data but having it hooked up to a live server at all times is very painful. So far I haven’t found a system that really gives me even these attributes and as it turns out there are more requirements that I would like that are also mostly unfulfilled. Here is a list of requirements I would like to see met by a templating system:
- Works well with HTML5/CSS3 progressive enhancement
- Allows mock data within the template that is replaced at runtime
- Client-side version that leverages the mock data for shift-reload debugging
- Composable components, not monolithic pages
- Very little or no business logic in the templates
- Concurrent evaluation possible
Right now I am looking at mustache.js and its various server-side implementations as a possible solution to this. It has many of those qualities but I would likely need to make some of my own modifications for things like concurrent evaluation.
Any suggestions?
Posted in Technology 12 Comments
Making Open Data Tables even easier: YQL Storage Editor
One of the big benefits of YQL is that you can make your own Open Data Tables and use them. However, one of the disadvantages is that you either have to host your tables on a publicly available URL or you have to painstakingly use the yql.storage table to manage your environments and table definitions. There has been an open feature request for the YQL console for a while now to integrate the ability to edit yql.storage content but it isn’t the highest priority thing for the team right now. Since I am using YQL more and more lately I decided to build it myself, leveraging Bespin, Mozilla’s web based editor.
Continue reading
Coders At Work Interview
Peter Seibel wrote a great book called Coders at Work which contains interviews of various programmers throughout computer science history. Yury Lifshits has put up a site called Interview 2010 that lets you both define interviews and respond to them. Peter graciously agreed to put up a subset of his questions for the interviews that he did and I have my answers below. After that, you will find a form to enter your own answers to this set of questions.
Sam Pullara
Long-time computer programmer
Peter Seibel: How did you learn to program?
Sam Pullara: Back when I was around 10 I asked for a computer. My mother looked at the available choices and decided that the Atari 400 was just a game machine and the VIC-20 looked like I might actually learn something. She was right. I started out programming in BASIC and then later 6502 machine code on the 64 and 128. In high school I finally learned a ‘real’ computer programming language, C, by reading a 700 page volume book in a single night. One day I will take a computer class.
Posted in Technology Leave a comment
What I would like to see in the new Apple device (iSlate, iPod Tablet, iTouch, iPad, iTablet, iPhone Max)
Update Misses: no cameras, no GPS, no stylus, no SD
If there is going to be an Apple Tablet there are a few features that I would like to see. These aren’t really predictions but more my limited view of how you might use such a device:
Hardware
- Front and rear video camera for killer video conferencing and augmented reality applications
- The standard WiFi, GPS, accelerometer and compass package with optional 3G/wimax connectivity
- Support for all the typical touch gestures along with a stylus for writing
- A low-power mode that is still suitable for reading documents
- A dock suitable for both home plugged in use and on an airplane so you can watch video on it easily
- At least 1080p resolution — any more than this is overkill
- Some thought to how you would carry it around without destroying it
- Smaller and lighter than a Macbook Air with a longer battery life — 8 hours?
- Single USB port, Display Port and SD card slot
- At least 64GB of local storage
- Might as well be a conference room quality speakerphone as well
Software
- Support for applications from the iPhone App Store along with new tablet applications
- Strong integration with MobileMe for Back to my Mac, syncing and file sharing
- Tablet versions of Mail.app, iWork, iLife and Dashboard
- Air gestures that use the camera and voice commands for additional remote control
- Broadcast whatever is on the tablet to another Mac or an AppleTV easily
- Run up to 3 applications at the same time
A device with a bunch of features like that might be nice to have around the house, in meetings and on the road. Could even get some programming done as long as I have a home machine I can connect to as well.
Posted in Technology 1 Comment
Drastically reducing GC pause times for YQL
Update 2: JRockit Real Time 3.1.2 using -XgcPrio:deterministic performed even better than this configuration in testing though it is not yet an approved VM at Yahoo! we will continue to test with it.
Update: One issue we still have is that after many hours of deployment with this configuration the heap fragments and we start to get concurrent mode failures. We only saw this though during periods of peak activity.
We were struggling with some long pause times due to GC for YQL that we couldn’t stomach for our internal property SLAs. The secret turned out to be a collection of parameters for the Java 6 garbage collector:
-XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode \ -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+CMSIncrementalPacing
I have so far been blown away by the results of this combination of parameters. Not only does it work very efficiently under moderate load, under crushing load it rises the occasion and aggressively keeps down the heap in such a way as to never cause the:
Concurrent Mode Failure The concurrent collector uses one or more garbage collector threads that run simultaneously with the application threads with the goal of completing the collection of the tenured and permanent generations before either becomes full. As described above, in normal operation, the concurrent collector does most of its tracing and sweeping work with the application threads still running, so only brief pauses are seen by the application threads. However, if the concurrent collector is unable to finish reclaiming the unreachable objects before the tenured generation fills up, or if an allocation cannot be satisfied with the available free space blocks in the tenured generation, then the application is paused and the collection is completed with all the application threads stopped. The inability to complete a collection concurrently is referred to as concurrent mode failure and indicates the need to adjust the concurrent collector parameters.
If you have any other GC secrets for the JVM, leave them here. Just as a heads up I compared it with all the other GC’s available for Java 6 including the experimental G1 and none of them were as effective.
Building OpenJDK 1.7.0 for Mac OS X 10.6 (Snow Leopard)
I’m basing this blog entry on this reference page. There are only a few different things that you need to do so I will spell those out cleanly relative to what was previously needed:
- Grab the dependencies except for JIBX, it is no longer needed for the build.
- Checkout the code as described.
- export JAVA_HOME=$SOYLATTE_HOME
- The build script is somewhat different:
env -i PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin \ make \ CC=gcc-4.0 CXX=g++-4.0 \ ALT_BOOTDIR=$SOYLATTE_HOME \ JAVA_TOOLS_DIR=$SOYLATTE_HOME/bin \ ALT_FREETYPE_HEADERS_PATH=/usr/X11R6/include \ ALT_FREETYPE_LIB_PATH=/usr/X11R6/lib \ ANT_HOME=/usr/share/ant \ NO_DOCS=true \ HOTSPOT_BUILD_JOBS=1
That should then result in a build/bsd-i586/j2sdk-image directory containing the JDK.
Posted in Technology 4 Comments
Update your FireEagle location automatically from any browser
With all the talk of geolocation in the browser, I decided this afternoon to go ahead and make it really easy for anyone to automatically update their location in FireEagle by going to a single url from any browser. Depending on the capabilities of your browser it will use various technologies to determine your current location:
- Firefox 3.5, iPhone: HTML5 Geolocation API
- Android and other browsers with Gears: Gears Geolocation API
- Other browsers: Google Client Location based on IP address
Posted in Technology 4 Comments
Creating a JSON web service API for Find My iPhone
One of the really cool features of MobileMe and the new iPhone 3.0 OS is the ability for it to reach out and locate your iPhone at any time if you have that feature enabled. Right now Apple only makes this available on their MobileMe website however and does not offer a programmatic way to get a hold of the information.
Since the iPhone doesn’t have background processes to update your location for third party applications I thought that it would be great to have the ability to do this anyway by leveraging their website. The first thing you need to do whenever you are going to scrape a sophisticated service like MobileMe is to collect all the relevant packets going over the wire. Since this service is entirely behind HTTPS the easiest way to do this is within the browser client itself. To that end I found what I believe to be the best Firefox plugin for the job, Tamper Data.
Continue reading
Posted in Technology 2 Comments
4hoursearch – faster, simpler, more powerful using YQL
As you know the original 4hoursearch was built using Yahoo! BOSS, YUI and Python running on Google App Engine. Although Google App Engine is a very productive environment I was unhappy with it for a few reasons. It doesn’t feel snappy enough, presumably because of the security enforcement aspects of the system, your code has to be written in Python which is not my favorite environment, and the last is that I was showcasing a great Yahoo! API by leveraging Google infrastructure. The last point is the least valid as Yahoo! doesn’t offer a truly equivalent environment but I think it will be more compelling as a showcase built entirely on Yahoo! technology. I could have moved it over to this new implementation when YQL launched but I also wanted to wait for BOSS to offer more features so I could significantly enrich the search experience at the same time.
Continue reading
Posted in Technology 4 Comments

