Archive for the ‘Web Applications’ Category

Virtual Kalimba

Saturday, December 26th, 2015

Virtual Kalimba


Visit the site for keyboard shortcuts, tips & tricks, and interactive production of sound!

The website is an experiment in Web Audio by Middle Ear Media.

The Web Audio Tutorials page at Middle Ear Media has eight (8) tutorials on Web Audio.

Demo apps:

Apps are everywhere. While native mobile apps get a lot of attention, web apps have become much more powerful in recent years. Hopefully you can find something here that will stimulate you or improve the quality of your life in some way.

Web Audio Loop Mixer

Web Audio Loop Mixer is a Web Audio experiment created with HTML5, CSS3, JavaScript, and the Web Audio API. This web app is a stand alone loop mixer with effects. It allows up to four audio loops to be boosted, attenuated, equalized, panned, muted, and effected by delay or distortion in the browser.

Virtual Kalimba

Virtual Kalimba is a Web Audio experiment created with HTML5, CSS3, and JavaScript. It uses the Web Audio API to recreate a Kalimba, also known as an Mbira or Thumb Piano. This is a traditional African instrument that belongs to the Lamellophone family of musical instruments.

Virtual Hang

Virtual Hang is a Web Audio experiment created with HTML5, CSS3, and JavaScript. It uses the Web Audio API to recreate a Hang, a steel hand pan instrument. The Hang is an amazing musical instrument developed by Felix Rohner and Sabina Schärer in Bern, Switzerland.

War Machine

War Machine is a Web Audio experiment created with HTML5, CSS3, and JavaScript. The App uses the Web Audio API to create a sample pad interface reminiscent of an Akai MPC. The purpose of War Machine is not to promote violence, but rather to create a safe (victimless) environment for the release of excess aggression.

Channel Strip

Channel Strip is a Web Audio experiment created with HTML5, CSS3, JavaScript, and the Web Audio API. This web app is a stand alone audio channel strip that allows an audio signal to be boosted, attenuated, equalized, panned, compressed and muted in the browser. The audio source is derived from user media via file select input.

Task Managment

A fast loading Web App for managing tasks online. This App offers functions such as editable list items, removable list items, and it uses localStorage to save your information in your own browser.

On War Machine, the top row, third pad from the left comes the closest to an actual gunshot sound.

Works real well with the chorus from Anders Osborne’s Five Bullets:

Boom , boom, boom, that American sound
Teenage kids on a naked ground
Boom, boom, boom, that American sound
Five bullets in Pigeon Town

For more details on Anders Osborne, including lyrics and tour dates, see: Ya Ya Nation.

I first saw this in a tweet by Chris Ford.

UI Events (Formerly DOM Level 3 Events) Draft Published

Thursday, March 19th, 2015

UI Events (Formerly DOM Level 3 Events) Draft Published

From the post:

The Web Applications Working Group has published a Working Draft of UI Events (formerly DOM Level 3 Events). This specification defines UI Events which extend the DOM Event objects defined in DOM4. UI Events are those typically implemented by visual user agents for handling user interaction such as mouse and keyboard input. Learn more about the Rich Web Client Activity.

If you are planning on building rich web clients, now would be the time to start monitoring W3C drafts in this area. To make sure your use cases are met.

People have different expectations with regard to features and standards quality. Make sure your expectations are heard.

Building a Database-backed Clojure Web App…

Saturday, March 8th, 2014

Building a Database-backed Clojure Web App On Top of Heroku Cloud App Platform by Charles Ditzel.

From the post:

Some time ago I wrote a post about Java In the Auto-Scaling Cloud. In the post, I mentioned Heroku. In today’s post, I want to take time to point back to Heroku again, this time with the focus on building web applications. Heroku Dev Center recently posted a great tutorial on building a databased-backed Clojure web application. In this example, a twitter-like app is built that stores “shouts” to a PostgreSQL database. It covers a lot of territory, from connecting to PostgreSQL, to web bindings with Compujure, HTML tempting with Hiccup and assembling the application and testing it. Finally, deploying it.

If you aren’t working on a weekend project already, here is one for your consideration!


Wednesday, January 23rd, 2013

Announcing Testling-CI by Peteris Krumins.

From the post:

We at Browserling are proud to announce Testling-CI! Testling-CI lets you write continuous integration cross-browser tests that run on every git push!


There are a ton of modules on npm and github that aren’t just for node.js but for browsers, too. However, figuring out which browsers these modules work with can be tricky. It’s often that case that some module used to work in browsers but has accidentally stopped working because the developer hadn’t checked that their code still worked recently enough. If you use npm for frontend and backend modules, this can be particularly frustrating.

You will probably also be interested in: How to write Testling-CI tests.

A bit practical for me but with HTML5, browser-based interfaces are likely to become the default.

Useful to point out resources that will make it easier to cross-browser test topic map, browser-based interfaces.

HTML5 and Canvas 2D – Feature Complete

Tuesday, December 18th, 2012

HTML5 and Canvas 2D have been released as feature complete drafts.

Not final but a stable target for development.

If you are interested in “testimonials,” see: HTML5 Definition Complete, W3C Moves to Interoperability Testing and Performance

Personally I prefer the single page HTML versions:

HTML5 singe page version.

The Canvas 2D draft is already a single page version.

Now would be a good time to begin working on how you will use HTML5 and Canvas 2D for delivery of topic map based information.

The Web engineer’s online toolbox

Thursday, November 29th, 2012

The Web engineer’s online toolbox by Ivan Zuzak.

From the post:

I wanted to compile a list of online, Web-based tools that Web engineers can use for their work in development, testing, debugging and documentation. The requirements for a tool to make the list are:

  • must be a live Web application (no extensions or apps you have to host yourself),
  • free to use (some kind of free plan available),
  • generic applicability (not usable only for a specific application/platform),
  • and must be useful to Web engineers (not just for Web site design).

If you are delivering content over the Web, you are either using or will be interested in using one or more of these tools.


Thursday, August 30th, 2012


From the documentation:

The Recline Library consists of 3 parts: Models, Backends and Views


Models help you structure your work with data by providing some standard objects such as Dataset and Record – a Dataset being a collection of Records. More »


Backends connect your Models to data sources (and stores) – for example Google Docs spreadsheets, local CSV files, the DataHub, ElasticSearch etc. More »


Views are user interface components for displaying, editing or interacting with the data. For example, maps, graphs, data grids or a query editor. More »

Make trial-n-error with interfaces easy, while you search for the one that users “like” in < 50 milliseconds. What if you had to hard code every interface change? How quickly would the rule become: Users must adapt to the interface? Not a bad rule, if you want to drive customers to other sites/vendors. (Think about that for a minute, then take Recline.js for a spin.)


Thursday, June 21st, 2012

SchemafreeDB (the FAQ)

From the blog page:

A Database for Web Applications

It’s been about 2 weeks since we announced the preview of SchemafreeDB. The feedback was loud and clear, we need to work on the site design. We listened and now have what we think is a big improvement in design and message.

What’s The Message

In redesigning the site we thought more about what we wanted to say and how we should better convey that message. We realized we were focusing primarily on features. Features make a product but they do not tell the product’s story. The main character in the SchemafreeDB story is web development. We are web developers and we created SchemafreeDB out of necessity and desire. With that in mind we have created a more “web application” centric message. Below is our new messaging in various forms.

The FAQ says that SchemafreeDB is different from every other type of DB and better/faster, etc.

I would appreciate insight you may have into statements like:

What is “join-free SQL” and why is this a good thing?

With SchemafreeDB, you can query deeply across complex structures via a simple join-free SQL syntax. e.g: WHERE $’Rochester’ AND $n:person.income>50000

This simplicity gives you new efficiencies when working with complex queries, thus increasing your overall productivity as a developer.

The example isn’t a complex query nor do I know anyone who would think so.

Are any of you using this service?

Concurrent Programming for Scalable Web Architectures

Wednesday, June 6th, 2012

Concurrent Programming for Scalable Web Architectures by Benjamin Erb.


Web architectures are an important asset for various large-scale web applications, such as social networks or e-commerce sites. Being able to handle huge numbers of users concurrently is essential, thus scalability is one of the most important features of these architectures. Multi-core processors, highly distributed backend architectures and new web technologies force us to reconsider approaches for concurrent programming in order to implement web applications and fulfil scalability demands. While focusing on different stages of scalable web architectures, we provide a survey of competing concurrency approaches and point to their adequate usages.

High Scalability has a good list of topics and the table of contents.

Or you can jump to the thesis homepage.

Just in case you are thinking about taking your application to “web scale.” 😉


Saturday, April 28th, 2012


Have you seen this?

Leaving the obvious politics to one side, what interests me is the ability to add comments to legislation.

Thinking of it in the context of standards work, particularly for topic maps.

Standardized mappings for taxonomies sounds to me like a useful topic map type activity. Having the ability to comment and process comments on drafts in a public fashion, sounds good to me.


Building Web apps with Python and Neo4j

Sunday, April 1st, 2012

Building Web apps with Python and Neo4j

Robert Rees writes:

Neo4J’s provision of an easy to use REST-based graph datastore gives us the chance to explore new ways of storing and organising the information we want to use on the web in the language of our choice; in my case Python.

In this talk I would like to present a few ideas about how we can use graph storage to closely mirror real world structures in web applications that in turn only need to lightly reflect the underlying data.

I will be offering examples through the medium of fantasy games like Morrowind, Fallout and Skyrim. Through a mixture of gaming geekery, reactive programming and data modelling I hope to offer a vision of a graph-based more webby future.

Robert makes a good argument that graphs are better for capturing the flow of actions or information on a website than the traditional page model.

The source code for the flow-based web question and answer: Flow web demo

The source code for the Heroku version: Flow web demo (Heroku version)

Webdam Project: Foundations of Web Data Management

Saturday, December 31st, 2011

Webdam Project: Foundations of Web Data Management

From the homepage:

The goal of the Webdam project is to develop a formal model for Web data management. This model will open new horizons for the development of the Web in a well-principled way, enhancing its functionality, performance, and reliability. Specifically, the goal is to develop a universally accepted formal framework for describing complex and flexible interacting Web applications featuring notably data exchange, sharing, integration, querying and updating. We also propose to develop formal foundations that will enable peers to concurrently reason about global data management activities, cooperate in solving specific tasks and support services with desired quality of service. Although the proposal addresses fundamental issues, its goal is to serve as the basis for future software development for Web data management.

Books from the project:

  • Foundation of Database, Serge Abiteboul, Rick Hull, Victor Vianu, open access online edition
  • Web Data Management and Distribution, Serge Abiteboul, Ioana Manolescu, Philippe Rigaux, Marie-Christine Rousset, Pierre Senellart, open access online edition
  • Modeling, Querying and Mining Uncertain XML Data Evgeny Kharlamov and Pierre Senellart, , In A. Tagarelli, editor, XML Data Mining: Models, Methods, and Applications. IGI Global, 2011. open access online edition

I discovered this project via a link to “Web Data Management and Distribution” in Christophe Lalanne’s A bag of tweets / Dec 2011, that pointed to the PDF file, some 400 pages. I went looking for the HTML page with the link and discovered this project along with these titles.

There are a number of other publications associated with the project that you may find useful. The “Querying and Mining Uncertain XML” is only a chapter out of a larger publication by IGI Global. About what one expects from IGI Global. Cambrige Press published the title just proceeding this chapter and allows download for personal use of the entire book.

I think there is a lot to be learned from this project, even if it has not resulted in a universal framework for web applications that exchange data. I don’t think we are in any danger of universal frameworks on or off the web. And we are better for it.

23 Useful Online HTML5 Tools

Friday, December 30th, 2011

23 Useful Online HTML5 Tools

Just in case you are working on delivery of topic maps using HTML5.

I am curious about the “Are you aware that HTML5 is captivating the web by leaps and bounds?” lead off line.

Particularly when I read articles like: HTML5: Current progress and adoption rates.

Or the following quote from: HTML5 Adoption Might Hurt Apple’s Profit, Research Finds

The switch from native apps to HTML5 apps will not happen overnight. At the moment, HTML5 apps have some problems that native apps do not. HTML5 apps are typically slower than native apps, which is a particularly important issue for games. An estimated 20 percent of mobile games will most likely never be Web apps, Bernstein said.

Furthermore, there are currently differences in Web browsers across mobile platforms that can raise development costs for HTML5 apps. They can also pose a greater security risk. This can result in restricting access to underlying hardware by handset manufacturers to reduce the possible impact of these risks.

Taking all this into account, Bernstein Research reckoned that HTML5 will mature in the next few years, which will in turn have an impact on Apple’s revenue growth. Nevertheless, the research firm, which itself makes a market in Apple, still recommended investing in the company.

Apple executives are reported to be supporters of HTML5. Which makes sense if you think about it. By the time HTML5 matures enough to be a threat, Apple will have moved on, leaving the HTML5ers to fight over what is left in a diminishing market share. Supporting a technology that makes your competition’s apps slower and less secure makes sense as well.

How are you using HTML5 with topic maps?

Digital Methods

Sunday, December 4th, 2011

Digital Methods

From the website:

Welcome to the Digital Methods course, which is a focused section of the more expansive Digital Methods wiki. The Digital Methods course consists of seven units with digital research protocols, specially developed tools, tutorials as well as sample projects. In particular this course is dedicated to how else links, Websites, engines and other digital objects and spaces may be studied, if methods were to follow the medium, as opposed to importing standard methods from the social sciences more generally, including surveys, interviews and observation. Here digital methods are central. Short literature reviews are followed by distinctive digital methods approaches, step-by-step guides and exemplary projects.

Jack Park forwarded this link. A site that merits careful exploration. You will find things that you did not expect. Much like using the WWW. 😉

Curious what parts of it you find to be the most useful/interesting?

The section on digital tools is my current favorite. I suspect that may change as I continue to explore the site.


Front-end view generation with Hadoop

Thursday, November 24th, 2011

Front-end view generation with Hadoop by Pere Ferrera.

From the post:

One of the most common uses for Hadoop is building “views”. The usual case is that of websites serving data in a front-end that uses a search index. Why do we want to use Hadoop to generate the index being served by the website? There are several reasons:

  • Parallelism: When the front-end needs to serve a lot of data, it is a good idea to divide them into “shards”. With Hadoop we can parallelize the creation of each of these shards so that both the generation of the view and service of it will be scaled and efficient.
  • Efficiency: In order to maximize the efficiency and the speed of a front-end, it is convenient to separate the generation from the serving of the view. The generation will be done by a back-end process whereas the serving will be done by a front-end; in this way we are freeing the front-end from the load that can be generated while indexing.
  • Atomicity: It is often convenient to have a method for generating and deploying views atomically. In this way, if the deployment fails, we can always go back to previous complete versions (rollback) easily. If the generation went badly we can always generate a new full view where the error will be solved in all the registers. Hadoop allows us to generate views atomically because it is batch-oriented. Some search engines / databases allow atomic deployment by doing a hot-swap of their data.

Covers use of Solr and Voldemort by example.

Concludes by noting this isn’t a solution for real-time updating but one suspects that isn’t a universal requirement across the web.

Plus see the additional resources suggested at the end of the post. You won’t (shouldn’t be) disappointed.

Optimizing HTTP: Keep-alive and Pipelining

Saturday, October 15th, 2011

Optimizing HTTP: Keep-alive and Pipelining by Ilya Grigorik.

From the post:

The last major update to the HTTP spec dates back to 1999, at which time RFC 2616 standardized HTTP 1.1 and introduced the much needed keep-alive and pipelining support. Whereas HTTP 1.0 required strict “single request per connection” model, HTTP 1.1 reversed this behavior: by default, an HTTP 1.1 client and server keep the connection open, unless the client indicates otherwise (via Connection: close header).

Why bother? Setting up a TCP connection is very expensive! Even in an optimized case, a full one-way route between the client and server can take 10-50ms. Now multiply that three times to complete the TCP handshake, and we’re already looking at a 150ms ceiling! Keep-alive allows us to reuse the same connection between different requests and amortize this cost.

The only problem is, more often than not, as developers we tend to forget this. Take a look at your own code, how often do you reuse an HTTP connection? Same problem is found in most API wrappers, and even standard HTTP libraries of most languages, which disable keepalive by default.

I know, way over on the practical side but some topic maps deliver content outside of NSA pipes and some things are important enough to bear repeating. This article covers one of those. Enjoy.

Dart: Structured Web Programming

Tuesday, October 11th, 2011

Dart: Structured Web Programming

Home for a new browser based application language.

From the homepage:

From quick prototypes to serious apps

Dart’s optional types let you prototype quickly and then revise your code to be more maintainable.

Wherever you need structured code

You can use the same Dart code in most modern web browsers (Chrome, Safari 5+, Firefox 4+) and on servers. Look for more browser support shortly.

Familiar yet new

Dart code should look familiar if you know a language or two, and you can use time-tested features such as classes and closures. Dart’s new features make it easier for you to develop and maintain software. Dart is still in the early stages of development, so please take a look and tell us what you think.

Charges, counter-charges, attacks/defenses of Dart are underway in a number of social media forums and I won’t waste your time with reports of them here.

Adding Machine Learning to a Web App

Tuesday, October 4th, 2011

Adding Machine Learning to a Web App by Richard Dallaway.

As Richard points out, the example is contrived and I don’t think you will be rushing off to add machine learning to a web app based on these slides.

That said, I think his point that you should pilot the data first is a good one.

If you mis-understand the data, then your results are not going to be very useful. Hmmm, maybe there is an AI/ML axiom in there somewhere. Probably already discovered, let me know if you run across it.

How Browsers Work:…

Wednesday, August 24th, 2011

How Browsers Work: Behind the Scenes of Modern Web Browsers by Tali Garsiel.

If you are delivering topic map content to web browsers, ;-), you will probably find something in this article that is useful.


A practical introduction to MochiWeb

Sunday, July 24th, 2011

A practical introduction to MochiWeb

From the post:

Bob Ippolito, creator or MochiWeb, describes it as “an Erlang library for building lightweight HTTP servers”. It’s not a framework: it doesn’t come with URL dispatch, templating or data persistence. Despite not having an official website or narrative documentation, MochiWeb is a popular choice to build web services in Erlang. The purpose of this article is to help you to get started by gradually building a microframework featuring templates and URL dispatch. Persistence will not be covered.

Just in case you are interested in building web services in Erlang for your topic map application.

Real World CouchDB

Sunday, July 24th, 2011

Real World CouchDB by John Wood.

Very good overview of CouchDB, including its limitations.

Two parts really caught my attention:

First, the “crash only” design. CouchDB doesn’t shut down, its process is killed. There’s a data integrity test!

Second, the “scale down architecture.” Can run CouchDB plus data on a mobile device. Synches up when connectivity is restored but otherwise, application based on CouchDB can continue working. CouchDB supports delivery of HTML and Javascript so supports basic web apps.

CouchDB looks like a good candidate for delivery of topic map content.

I wanted to include a link to a CouchDB app for the Afghan War Diaries but the site isn’t responding. You can see the source code for the app at:


Thursday, January 27th, 2011


From the website:

Flapjax is a new programming language designed around the demands of modern, client-based Web applications. Its principal features include:

  • Event-driven, reactive evaluation
  • An event-stream abstraction for communicating with web services
  • Interfaces to external web services

Flapjax is easy to learn: it is just a JavaScript framework. Furthermore, because Flapjax is built entirely atop JavaScript, it runs on traditional Web browsers without the need for plug-ins or other downloads. It integrates seamlessly with existing JavaScript code and other frameworks.

Don’t know if anyone will find this useful but some of the demos looked interesting.

Thought it would be worth mentioning for anyone looking to build client-based topic map applications.