Posts Tagged ‘web development

Full circle Javascript

Posted in Technicalon May 22, 2015

When I first started learning Javascript, in the Netscape Navigator version 3 days, all the programming for a page was done in the web browser.  Javascript could read the query parameters to a page and construct the page with information according to the request.  In those days, I did everything in the browser because I couldn’t afford my own web server, and the free servers of those days (Geocities, Tripod) only really supported static pages.

Finally I got access to a server that ran PHP, which was awesome because I could do all the programming on the web server, reducing the frustration of dealing with various versions of web browsers that supported different feature sets.

But recently, web browsers conform to standards better, support a richer feature set, and are supported by many Javascript client libraries.  I’m finding that more and more, I’m ditching the server side program in favor of more client side programming. This is especially true with my embedded system work, where offloading the User Interface to the web browser provides a better experience.

While Google is perhaps one of the most innovative web development companies out there, sometimes I am slightly disappointed because they fail to meet my exceedingly high expectations. Google has developed and released very few applications that I would consider as world changing. The short list includes Search, Gmail, Maps, Spreadsheets, and Calendar. That isn’t to say that Google hasn’t purchased and developed other emerging technologies which might also been revolutionary–Blogger, Picassa, Writely, Keyhole, and YouTube–but those applications got their start outside of Google. That also isn’t to say that Google hasn’t developed other standards and technologies which have greatly furthered the Internet. I’m simply making the point that Google has developed, from the start, only a few applications that most Internetizens would consider life-changing.

There is perhaps one product which is little known that I consider as having changed the Internet forever. This app has never really seen daylight outside the lab. In fact, its been a part of Google Labs for the last three and a half years. The product of which I’m referring is Google Suggest. If web applications were a family tree, Google Suggest would have been the grandfather of the so-called Web 2.0 apps we have today.

Google Suggest makes use of a web browser feature called XmlHttpRequest. This feature allows the browser to connect back to the web server and download additional content after the web page has already loaded. Today we see this feature used all around the web, but when Google Suggest was first released, few people ever knew that it existed. Post-loading content from the server was so revolutionary, that it has seen incredible adoption all over the net. So although most people never really knew about Google Suggest, it has indeed been the spark that lit the Web 2.0 firestorm.

Today Google released a new product platform which may be listed among the great revolution products from Google. Google App Engine (not to be confused with Google Apps for your Domain) is a service which allows web application developers to host their applications on Google’s servers, using Google technology.

Google App Engine solves the single biggest challenge in web application development: hosting. Having a web host that is well configured, well connected, and well tested is usually expensive, but it seems that Google will be providing at least some level of hosing for free. This really gives developers a whole new level of freedom for creating apps, and I think this will foster a whole new level of web application creativity. Who knows, this might be just the beginning of something called, Web 3.0.

Adobe Error

Posted in Technicalon Feb 25, 2008

Today, Adobe announced a new product: Adobe Air. The basic concept of this is that you can compile a web application that you’ve developed to be a run-time on a users system. Adobe accomplishes this through distribution of the WebKit HTML rendering engine. Basically, your apps run like they would in a web browser, except that they look more like they are a standalone desktop application.

Adobe has done a good job at allowing Air applications integrate well with the desktop.

Adobe isn’t the first to use internet delivery technologies for desktop applications. Mozilla’s XULRunner allows developers to create and package multi-platform programs based off the same technology that powers Firefox. However, Adobe has done a good job at making it simple to publish very traditional AJAX apps as desktop apps.

Adobe’s big problem is they only support Windows and Mac. There is no Linux support, at least not yet. One of Adobe Air’s big selling point is that it makes it easy to create cross-platform applications. However, without Linux support, the most Adobe can advertise is dual-platform apps.

For a great demo Air app, look at this complex YUI example.

I need a better templating language, one where an included (called) template can change its containing (caller) template. For example, consider this container template:

<html>
<head>
<title>{define-spot name="title"}</title>
<script language="Javascript">
{define-spot name="js"}
</script>
</head>
<body>
{include file="inside.tpl"}
</body>
</html>

This container creates a spot where a title can be placed and where some javascript can be placed. It then includes another template file which will put content in those spots. This included template, inside.tpl, would look like the following:


{fill-spot id="title"}Jacob's Super Page{/fill-spot}
{fill-spot id="js"}alert('hello'};{/fill-spot}
<h1>Hello</h1>
<p>This is a sample template file</p>

The template language would also need to be flexible enough such that if the included template didn’t fill the spots, then things continue to work without without crashing, as if the spots had been filled with nothing.

The problem is that many template language translate their template into some sort of source code, and usually that source code turns out to be in a procedual language. This means that templates are parsed from top to bottom, so by the time the inside template is included, the template parser has already parsed the spots above it, and can’t go back and fill those spots (because that would require parsing the container template twice).

A posible solution may be available in some template language which would allow you to parse the inner template first by placing it at the top of the container template, capturing its output, and displaying it later. This would result in a less-elegant container template that might look like the following:


{capture to="inside-contents"}
{include file="inside.tpl"}
{/capture}
<html>
<head>
<title>{define-spot name="title"}</title>
<script language="Javascript">
{define-spot name="js"}
</script>
</head>
<body>
{show id="inside-contents}
</body>
</html>

Avago’s site search

Posted in Technicalon Feb 11, 2008

I work at HP in Fort Collins, Colorado, which shares its campus with Avago Technologies. I was curious to see what sort of products my neighbors were working on, so I checked out there website. One thing I noticed was their search box:
Avago Search Box

What the heck is a parametric search anyway?

It is important for web sites to clearly present an interface, without making the user think. Puting an abstract term like parametric search just confuses users.

Today I discovered that a link to a post on my blog is included in the source to JBoss Richfaces. The blog post that was referenced was a small note I made about bug in the Safari web browser. They provided a workaround in Javascript code for a suggestion box, and they referenced my post in a comment in the source code.

It makes me feel good when I see things that I’ve written appear in real-world applications. It is also nice that the source code is open, which means that anyone can look at it and appreciate my website address.

SQLite Manager that rocks

Posted in Technicalon Nov 6, 2007

As a web developer, I’m always on the lookout for tools that help me develop great web apps. Today I found a tool to help manage an SQLite database. It is developed as a Firefox add-on, and it is called SQLite Manager. Although it runs under the Firefox web browser, it provides a nice interface for managing an SQLite database that is local to your system. If you are into managing such database, I suggest this add-on.


Categories