Stronger JavaScript?

By on October 8, 2015 8:23 am

The V8 team (the JavaScript engine that powers Chrome, Opera, Node.js, MongoDB, etc…) are moving forward with an experiment in defining a stronger version of JavaScript that ensures that code being run is behaving well, and introducing run-time typing based on TypeScript’s typings. V8’s motivation is always performance, and a more stringent set of ECMAScript would obviously allow them to tune the engine to streamline performance, but are there other benefits?

SitePen Unplugged 2014: A face-to-face adventure

By on August 20, 2014 9:31 am

SitePen is a rather unique company. For those of you who don’t already know, everyone in our company works from home. We are all spread across the United States. Despite that, the magic of our culture is that we feel closer to our coworkers at SitePen than at our previous office-based jobs. How is that even possible?!? We have grown together (think Katamari Damacy) through phone and online conversations and the virtual office we share is a very real thing for us. However, as a result, most of us haven’t seen each other’s faces before. Unplugged was a treat for everyone as it gave us a week to indulge in the opposite end of the social spectrum. No electronic devices, only face to face interactions and (gasp! frightening, I know) eye contact! Hey seriously, stop looking at the floor… I’m up here!

Leading up to the Unplugged event itself, nobody knew exactly what we were getting ourselves into. We only knew that we signed a few scary waivers, there would be rafting, no electronic devices, and that our flights were taking us all to Colorado on the same day. Suspense and intrigue leading into a new, shared adventure!

NoSQL Architecture

By on May 11, 2010 12:03 am

The NoSQL movement continues to gain momentum as developers continue to grow weary of traditional SQL based database management and look for advancements in storage technology. A recent article provided a great roundup of some of the great new technologies in this area, particularly focusing on the different approaches to replication and partitioning. There are excellent new technologies available, but using a NoSQL database is not just a straight substitute for a SQL server. NoSQL changes the rules in many ways, and using a NoSQL database is best accompanied by a corresponding change in application architecture.

The NoSQL database approach is characterized by a move away from the complexity of SQL based servers. The logic of validation, access control, mapping querieable indexed data, correlating related data, conflict resolution, maintaining integrity constraints, and triggered procedures is moved out of the database layer. This enables NoSQL database engines to focus on exceptional performance and scalability. Of course, these fundamental data concerns of an application don’t go away, but rather must move to a programmatic layer. One of the key advantages of the NoSQL-driven architecture is that this logic can now be codified in our own familiar, powerful, flexible turing-complete programming languages, rather than relying on the vast assortment of complex APIs and languages in a SQL server (data column, definitions, queries, stored procedures, etc).

Resource Oriented Programming

By on May 9, 2010 12:07 am

The REST architecture has become increasingly recognized for its value in creating scalable, loosely coupled systems. REST is presented as a network interaction architectural style, not a programming methodology. However, the principles of REST can actually be very meaningfully and beneficially applied in the programming realm. We will look at how the resource oriented approach of REST can be applied as principles for programming language usage and design. The motivation for looking at REST should be clear. Little in history has been as ridiculously successful and scalable as the web, and REST is a retrospective look at the principles that were employed in designing the core technologies of the web, particularly HTTP. Applying such proven principles to our application design will certainly be beneficial.

Roy Fielding‘s REST architecture is broken down into seven constraints (and the four sub-constraints of the uniform interface). The individual concepts here are certainly not new, but collectively looking at these concepts as resource oriented programming may provide an interesting new perspective. I will also look at how these principles are exemplified in Persevere 2.0 in its object store framework, Perstore, and its web stack Pintura.

CommonJS/JSGI: The Emerging JavaScript Application Server Platform

By on January 19, 2010 2:25 am
This entry is part 1 of 12 in the series Server-Side JavaScript, Pintura, and Persevere 2.0

CommonJS (formerly known as ServerJS) has become the essential hub around the development of server side JavaScript (SSJS). SSJS for years has suffered from fragmentation, but the CommonJS project has provided the momentum to bring different frameworks together and start building interoperable modules. SSJS is ripe with potential; JavaScript has been soaring in popularity and the ECMAScript 5 specification was recently accepted. JavaScript has proven itself as the language of the web’s client-side (even ActionScript is a derivative of JavaScript). The opportunity to use the same language on both client and server is certainly most realistic and viable with JavaScript as it avoids the need for translation.


CommonJS has focused on developing critical APIs for building reusable modules, particularly for server-side JavaScript environment. The server-side is generally based around database interaction, file I/O, HTTP serving, and the generation of data formats and HTML, whereas the client-side is based around DOM manipulation and the browser object model. There are certainly APIs that can be used on both sides, and JavaScript on the client and server invites the reuse of APIs where possible. The WebWorker, Indexed Database, and XHR APIs are promising to be enormously beneficial on the server side, and with excellent client server consistency. But still the server side requires special attention, and CommonJS is bringing the needed standards and conventions.

Convergence of Chrome OS and Android?

By on December 8, 2009 11:59 pm

Google recently was asked about something we have suspected: Android and Chrome OS may converge. From our perspective, Android and Chrome OS both offer compelling opportunities for building great web apps, but having two distinct operating systems from Google, each with different approaches to development, just adds complexity and confusion to the overall development landscape. Of course, it still bothers us that iPhone apps and Dashboard widgets aren’t interoperable.

Android has the first mover advantage of being deployed today to many devices, but to really get the most out of it, you really should develop using Java, or employ a toolkit like PhoneGap. Chrome OS offers the promise of using web technologies that are popular today, but is not yet production-ready, or optimized for mobile devices like Palm’s webOS.

The long-term expected convergence from Google makes sense. Convergence of Palm’s webOS with Chrome OS makes sense to us as well as they are both pushing towards having a very similar WebKit-based operating system for delivering web applications. Palm already appears to be moving in the direction of converging with Chrome through their adoption of key technologies in webOS such as Google’s V8 JavaScript engine. There’s nothing confirming that this will happen, other than it just making sense.

While there is a lot of short term interest in apps, you can still get significant results from mobile web apps, and the gap between a native app and a web-based app will quickly shrink, as evidenced by apps like Pie Guy. After all, web apps don’t require app store approval!

iTunes Store now based on WebKit

By on September 11, 2009 1:08 pm

In the continuing blurring of the lines between web and desktop, Apple has moved the iTunes Store in iTunes 9 to use WebKit as its rendering engine. I was actually surprised to learn this was not always the case, especially with Apple adding Safari for Windows a while back.

The rest of iTunes remains a custom desktop user interface, but it would not surprise me to see iTunes 10 be completely rendered using open web techniques. We already see competing products like Songbird using open web technologies for rendering media players, and it could eventually lead to a version of iTunes that lives inside Mobile Me, with songs stored in the Apple cloud.

Given Apple’s recent push on efforts like Time Machine and Mobile Me, it seems like Apple is working hard towards the important goal of making it very easy for users to not lose their data and work, and moving the iTunes franchise to the web would seem to be the next logical step!

JSON Namespacing

By on September 2, 2009 12:23 pm

(or “Why JSON Hyper Schema means JSON doesn’t need XML’s namespacing colon cancer”)

I recently posted a proposal for an addition to JSON Schema, called JSON Hyper Schema, for defining the properties of a JSON structure that represent links or references within data structures. This is intended to provide the same linking capabilities of JSON Referencing, but in a much more flexible manner such that schemas can be used to describe link information in existing data structures without requiring a fixed convention. I wanted to exposit one of the further benefits of using this type of schema: satisfying the goals of namespacing in JSON.

IEeighty6‘ed: The Movement

By on August 14, 2009 9:46 am

Recently, there’s been an increasing emphasis and enterprise-organized uprising focused on eliminating IE6 from the world as quickly as possible. For the unaware, supporting this outdated browser is expensive and limits our creative abilities when it comes to web development.

Mashable has summarized Microsoft’s position that IE6 cannot die until Windows XP dies, even though Microsoft strongly encourages users to upgrade.

We recognize that IE6 was the best browser on the market when released — in 2001. We, also understand that many organizations have invested significantly, buying and building apps on proprietary, non-forward compatible technology such as ActiveX or extensions to IE6. While extensions are not inherently evil, they have a tendency to lock you into a single-vendor solution, which may not be supported in future versions of their product, in this case IE7 and later.

This is one of the reasons that we’re proponents of open source software. We build web applications using free and open source works such as Dojo, which we help adapt and update for new browsers as they are released, to prevent getting stuck with untenable solutions. If you’re looking to unshackle yourself from the confines of an IE6-strapped web application and empower your users to participate in the joys of modern-day web browsing, contact SitePen for a free 30-minute consultation today.

Platform Optimization Strategies for Ajax Toolkits

By on January 22, 2009 12:05 am

With the proliferation of real web browsers on mobile devices (iPhone, Android, Palm Pre, Nokia), an increasing number of browsers (Chrome) or browser-like platforms (AIR, Titanium, Jaxer), portal standards for widgets and gadgets (Caja, AdSafe, work by the OpenAjax Alliance, and much more), are the days numbered for a JavaScript toolkit that uses the same code base across all platforms without a compile step numbered?