Blog
$
- High Modernism & Software Design
- What Might Happen If You Share It
- But What About the Bus Factor?
- Welcome to the Twitterscape
- On Working Alone
- Mocking Classes with TypeScript
- Museum of the Analog Native
- A Tale of Two Issues
- Notes on AngularConnect 2017
- The Covert Opt-In
- Going Static with Hugo
- Productivity Is Happiness
- The Elevator of Infinite Abstraction
- Some notes on Angular 2 AoT mode with Webpack, Sass & ngtools
- An Early Look at SKQW: JavaScript Audio Visualizer
- Why I Haven’t Fixed Your Issue Yet
- Components with Custom Templates in Angular 2 (beta.7)
- Angular 2, CommonJS and Circular Dependencies
- AngularConnect: Summary and Analysis
- The Republic of Virtue: Terror, Tolerance and the Internet
- Fixing Chrome Autofill: Mysterious Wrong Values Solved
- Automatic @import of Less/Sass files with Gulp
- angular-wordpress-seed: A complete example project with AngularJS and the WordPress JSON REST API
- A Note on Angular Expressions And JavaScript Identifiers
- Book Review: Responsive Web Design with AngularJS; plus Musings on Technical Writing
- Exploring ES6 Classes In AngularJS 1.x
- The Programmer Dad
- One Year of GitHub and Open Source
- Building a 3D Game with CSS + HTML
- My Thoughts on ngEurope 2014 and AngularJS 2.0
- Writing Multi-Element Directives in AngularJS
- CSS + JavaScript 3D Butterfly: A Case Study
- Experiences Building a Website with AngularJS + WP-API (WordPress API)
- A Note on Touch (Pointer) Events in Internet Explorer
- Enable Rich Social Sharing in Your AngularJS App
- A Killer Startup Idea
- What Makes A Good Tech Talk?
- Site-Wide Split Tests With Google Analytics Content Experiments
- Paginate (almost) Anything in AngularJS
- Auto-breadcrumbs with angular-ui-router
- Simple 1D Noise in JavaScript
- Confessions of an Intermediate Programmer
- Audio Visualization with Web Audio, Canvas and the Soundcloud API
- Using Disqus with AngularJS
- An Overview of the ng-conf 2014 Presentations
- An Ordinal Date Filter for AngularJS
- How I got Zurb Foundation 4 to work with IE8 with zero lines of code
-
Going Static with Hugo
I have just converted this website from an AngularJS app backed by the Wordpress REST API to a static HTML site powered by Hugo, a static site generator written in Go. This post explains my reasoning, experiences and thoughts about the results. Back in 2014 I was learning AngularJS, and I decided to build my website with it as a learning exercise. I wrote about it here. I was happy with the design, but there were a number of issues with which I gradually grew dissatisfied. -
Productivity Is Happiness
When we talk about productivity, it is usually in the context of our professional lives. Is this fair? Does productivity begin and end at the office door? I’d like to address this question indirectly, by backing up and taking a high-level look at the subject. No tips or “weird tricks” here; rather some brief thoughts on the scope of productivity. Productivity is happiness. Happiness is the sensation you get when you progress towards a goal. -
The Elevator of Infinite Abstraction
In software development, we often hear and speak of abstractions. When we use this term, we often mean some variation on concepts such as “hiding the implementation details”, “providing an interface”, “modelling a data type” or even “removing duplicate code”. But what is the essence of abstraction? The origin of "abstract" in the Macmillan Dictionary for Students I was recently looking up the term “abstract” in a dictionary, and was struck with the origin of the word: -
Some notes on Angular 2 AoT mode with Webpack, Sass & ngtools
Earlier this week I set out to convert a few of my Angular 2 apps to use Ahead-of-time (AoT) compilation. I’ve just been to AngularConnect and heard about a project named “@ngtools/webpack” (video here) which supposedly allows you to use the same build tools that the angular-cli project uses, even if you don’t use the cli (which is the case with my stuff right now). So I eagerly searched out@ngtools/webpack on npm and found this: -
An Early Look at SKQW: JavaScript Audio Visualizer
SKQW (pronounced “skew”) is a native desktop audio visualization application written in TypeScript with Angular 2, and implemented on the Electron framework. It is currently in alpha and a compiled binary only exists for Windows, but I’m hoping that - if there is interest - I can push the project forward and improve stability, features and of course bring full support to Mac OS X and Linux. If you want to check out the project itself, go to the SKQW website. -
Why I Haven’t Fixed Your Issue Yet
Hi there. You opened an issue with my project on GitHub, and it’s getting kind of stale by now. I am aware of it - GitHub was kind enough to send me an email containing your report, which I scanned one morning a couple of weeks ago while I ate breakfast. I’ve even thought about it briefly a couple of times since then; once I was in the shower and I got the vague idea that I knew what caused it - but I wasn’t sure because I could not recall the specifics. -
Components with Custom Templates in Angular 2 (beta.7)
Want to create a reusable Angular 2 component which can be customized with a user-provided template? I had this use case and could not find any relevant documentation or tutorials, so after a few days digging around the internals on Angular 2, I am sharing the result of my research. This is one way to do this - perhaps there are other, better ways. Feedback is welcome! (TL;DR - working demo on Plunker) -
Angular 2, CommonJS and Circular Dependencies
Yesterday I lost several hours to the following error in an Angular 2 app I am working on: Cannot resolve all parameters for 'BaseDataService'(Http, undefined, ODataService). Make sure that all the parameters are decorated with Inject or have valid type annotations and that 'BaseDataService' is decorated with Injectable. The undefined in this case is my redux AppStore service. Other dependencies (Http, ODataService) worked just fine. Even weirder - I was successfully injecting AppStore into several other components without issue. -
AngularConnect: Summary and Analysis
AngularConnect, the largest Angular conference to date, has just taken place in London. Here is a summary based on what I learned and what I found most interesting. Since it was a two-track event, I only saw half the talks, so for the full picture, watch the sessions yourself on YouTube. Many of you just want a quick rundown on the key points, so the first section of this post is just that - “the meat”, albeit in bite-sized pieces (think pork scratchings or jerky). -
The Republic of Virtue: Terror, Tolerance and the Internet
I’ve recently been listening to the excellent podcast series Revolutionsby Mike Duncan. Right now we are in the thick of the French Revolution. It’s really riveting stuff, and offers some fascinating insights into the interplay of groups, ideology, virtue, violence and terror. If that list sounds familiar, perhaps you frequent Twitter or Reddit or some other online community. Detail from a painting of the execution of Robespierre Ah, the Internet - the defining technology of the new Information Age.