New Schedule Editor 09 Jun, 2018
I have finally finished my online annual hourly schedule editor, which took several iterations and quite some time to get working the way I wanted. It's of interest because hopefully its relatively easy to use and can read and write schedules in a range of different formats, including EnergyPlus (IDF and epJSON), OpenStudio (OSM), DIVA/DaySim (.OCC.CSV) and some other CSV layouts.
Why Educational Tools 12 Nov, 2017
A common question I get, both directly and indirectly, is why do I spend so much time on what seem to be pretty limited educational apps rather than doing a full-on building analysis tool that can handle real projects. I documented this at the start of a recent research paper , but figured that I should probably summarise my reasons here as well.
JSON Settings 08 Nov, 2017
Quite a few people have asked lately about the settings editor in my web apps and how to use it. Actually most of the questions were more along the lines of 'why on earth do you use JSON for storing settings in your apps, and what’s with that weird editor?'. Well I have one or two good reasons for both, which I shall endeavour to explain.
Two New Web Experiments 01 Nov, 2017
As part of adding support for scriptable tutorials, I had to create my own 3D vector font and annotation libraries. Both are intended to be highly dynamic and customisable so I wrote a couple of apps that interactively control their properties to thoroughly test them. As a bonus, these apps also serve as font and annotation designers, allowing you to do visual customisations and then copy/paste the code required to create that text or annotation in a script.
Moving From Drupal to Hugo 08 Feb, 2016
My content management system of choice is Drupal. It has served me pretty well and allowed me to do a lot of things I probably could never have done without it. However, it has become such an attention seeker these days; with security issues, module upgrades, heavy comment spam and database blowouts seemingly weekly events. Also, upgrading to the newest version is never as smooth as promised. Thus, instead of upgrading my blog to Drupal 8, I have dumped it entirely and moved to a completely static site using Hugo.
Understanding WebGL 05 Jan, 2016
My biggest issue with WebGL, and actually all non-immediate-mode OpenGL, is constantly fighting with the requirements of vertex buffers and attributes. I seem to be always looking for ways to minimise and optimise memory whereas vertex buffer objects always seem to want me to waste large amounts of it with duplicate attributes. However, reconciling that requirement in my own mind has actually given me a bit of insight into potentially alternate uses for the WebGL render pipeline.
Web Experiments 30 Sep, 2015
PerformativeDesign.com has gone into a short code-freeze for some external testing now so I have finally got a bit of time to catch my breath. As part of that work, I have had to do quite a few small experiments and proofs-of-concept, just as a way of seeing what was possible and then working out the best ways to do various things. Some of these were a bit interesting and often a lot of fun so I thought I'd polish up a few and make them available as a small taster of things to come, hopefully quite soon.
Interactive 3D in a Web Page 03 Jan, 2010
This page discusses the results of my experiments with Processing over the Christmas break. What is interesting about Processing is that it allows you to create fully interactive 3D applets embedded in a standard web page on any platform. For visualising and playing around with complex concepts, this offers something far more exciting than even Adobe Flash.
Stung by Drupal's Filter Caching, Again 02 Sep, 2009
When will I ever learn? I just lost another few hours of my life because - again - I didn't properly understand Drupal's filter cache system.
Hacking Drupal's 'Read more' Link 28 Aug, 2009
When displaying a list of node teasers, Drupal includes a 'Read more' item within a list of links at the bottom of each node. Other items in this list include links for adding comments, the number of page reads and other node-specific actions. For users not familiar with Drupal, this link can be easily missed as it is given the same significance as all the others, making it not particularly obvious that there is more information available.
Graph - Annual Temperatures (Google) 05 Aug, 2009
The graph is one of my experiments with Google's Visualisation API as a possible means of interactive web-based data presentation. It's an implementation of an annotated time line graph that Google originally developed for showing stock exchange data - used here to show annual hourly air temperature values. It has to process a whole year's worth of hourly temperature data for San Francisco, so it can take a little while for the graph to first appear.
Graph - Annual Temperatures (Java) 27 Jul, 2009
This is an experiment with the use of Java applets to provide highly interactive charts and graphs embedded within a web page. It is just an example so the data it shows is not hugely meaningful - in this case a set of annual hourly air temperature values. However, it is an opportunity to play with my primitive attempt at an interactive and intuitive date range control. This control sits at the bottom of the chart and provides a means for selecting a date range for the values shown.
Embedding Java Applets 29 Jun, 2009
Embedding Java applets in a web page should be pretty trivial, there is even an 'applet' HTML tag specifically for that purpose. However, it turns out this is now deprecated in favour of the new 'object' tag. As usual, this new tag is implemented differently by different browsers so it ends up being anything but trivial.
Browser Detection Methods 28 Jun, 2009
Whilst there may be many reasons for wanting to know which browser your web page is being viewed within, the main one I find is needing to tweak some CSS or embedded applet code to accommodate certain rendering inconsistencies. At first glance, this seems pretty easy with dynamically-generated pages as most server-side programming or scripting languages provide a way of doing this as the page is being assembled for delivery. However, for both static web pages and content that is likely to be cached by a content management system (CMS) it isn't so easy. This article therefore considers a range of available browser detection methods.