2014 In Review
It has been a bad year for my blog. Early on I started working on a new blogging platform that would also support a number of other content types to better reflect my life. I wanted to host my own data from my running and mountain biking activities...
Summer is Coming
And with summer, my almost year long blog hiatus ends. July 31st 2013 was the day my second daughter was born. Besides installing some long forgotten parts in the server machine, little has happened since then. Well, little has happened with regards...
The End of May
The blog has been silent lately but i certainly have not been sitting still. About a month ago I started to remake the administration area of the blog into something a bit more fashionable (today it consists of a few input boxes and a "publish" butto...
Decreasing Load Time When Using Google Web Fonts
I've been using Google Web Fonts ever since I started building this blog. It's an awesome service with a great user interface and it makes it really easy to add fonts to your web site. Of course I had to find something wrong with it. Earlier this w...
Pictures!
I've been hacking away at the blog again and made a little nifty photo uploader for the admin area. It resizes the image on the client (browser) before uploading it with Ajax which is great because now I can upload directly from my phone without worr...
Search And You Shall Find
Every blog should have a search box. Not because it's necessary, but because it's fun to implement. A few weeks ago I ran across a small Javascript library called Lunr.js. It's basically a small text indexer that can rank search results and it's wri...
New Drapes
I got tired of the old dark green design. It was too murky and spring is in the air, so I redesigned the site to be lighter and more "spring-y". ` `Inconsolata` is back as the source code font and `Open Sans` makes up the majority of the text on ...
4 Hours of Markdown
Wow, that was kind of exhausting. I've completed my rewrite of all my blog posts into Markdown. Somewhere in the middle I found why my inline HTML didn't work and that made my old posts look almost acceptable, but the syntax highlighted source code ...
Marked Up With Markdown
Desperate, as always, for lowering my blogging threshold I implemented Markdown syntax for the blog. As I did this through use of the marked plugin I lost support for inline HTML (might be a setting though). For a few hours this means that my old bl...
OMG New Certificates
One might wonder where I've been or what I've been up to these last couple of months. One would be right to wonder why I, so close to the one year anniversary of this blog, suddenly stopped writing. The truth is kind of embarassing. I created a ...
The Fabulous Pi
In March this year I took a great leap forward in performance when I built my in-memory cache. It took my blog from a paltry 5 requests per second to a whooping 62 requests per second. Well, since then I've made some changes... Since you already ...
Maintenance In Progress
I've embarked upon my mission to upgrade my server installation. It's probably going to take the better part of this week but I hope to be done by this weekend when my parents-in-law are coming to stay with us. Here's my todo-list as of now. 1. Fin...
Old But Not Dying
Tuesday the 25th of September 2012 marks my 30th birthday. Even though I might not be fresh meat anymore, I haven't forgotten about my blog. I've just been busy (raise your hand if you've heard that one before). * I've been planning an article ab...
LESS Is More, More Or Less
A while back I read a blog post somewhere about how the LESS parser/compiler had been remade in Javascript. "Well awesome", I thought to myself as I had been wanting some more flexibility in CSS but had been to stubborn/proud to install the SASS com...
Cache Me If You Can
Today at work was "do-anything-but-work-day". It's a bit like Googles 20%, but instead of 20% it's more like .8% or something like that. It's was our first time and not that many people had a clear idea about what to do at first. I on the other hand...
The Development Environment Enigma
As you might have noticed, there hasn't been much work done on the blog these last few months. It kind of boils down to complexity. When I started building this blog my main workstation was running Windows 7. Everything ran as well on Node.js on W...
The Month of No Content
If not for this year being a leap year, there would have been no posts made this month. I plan on doing better. I also hope on getting ill a lot less in the months to come....
Content-Length - A HTTP Header/UTF-8 Story
The HTTP protocol has a lot of header fields that affects requests and responses. HTTP also have a couple of different request types (HEAD, GET, POST, PUT and DELETE). Unless you're building a REST service, you mostly have to deal with GET and POST o...
Say welcome to IBS!
The blog is now up and running on the new server (called IBS). I'm not totally retiring the laptop yet as I might need it when the next Ubuntu LTS hits. And I have yet to try out if it's the Atom processor that makes CouchDB run a little slower on t...
A New Home
I finally ordered a new server. It will probably take a few days to get it running (first I have to get the parts delivered), but at least I get to build a computer again. It was ages ago that I did my last build and I've never even touched an SSD or...
TODO 2012
Between my trip to the west coast for Christmas and my office being jammed up with boxes, there hasn't been that much developing going on for me in the last few weeks. I have, however, not been able to stay away from it completely so a few nights ago...
The Gift of Source Code
I'm not sure if anyone is interested in my source code for this blog, but since I've already posted some bits and pieces of it from time to time, I thought, why not release it all? If your browser has a width of more than 720 pixels, you will see a ...
Feeding the crowds
For a while now I've been trying to decide between ATOM and RSS for by blog feed, and yesterday one of our company's owners asked me for a feed to my blog so that he could consume it at our new company web site. I've finally decided to create an ATO...
Client-side JavaScript Initialization
Yesterday I started using the BundleController with my JavaScript files on the client-side. I also deployed my ViewManager so that all my views now uses the bundled and minified JavaScript file produced when I start (or restart) my Node.js server. T...
Handling Views in node.js
This weekend, my wife and daughter have been away up north, visiting my in-laws. I thought this would be a great opportunity for me to buffer up on some blog posts, but it seems like my inspiration mostly left with them. Last Tuesday at my weekly tu...
The Logarithmic Tag Cloud
A few days ago I sat down and tagged all my posts. Last night I decided to write a tag cloud. I started out with a simple linear scale: ` * `maxCount` - The highest occurance of any tag. * `minCount` - The lowest occurance of any tag. * `maxSize...
Cleaning up
I'm starting to have quite a few views in CouchDB and I've done my best to name them in a logical way so that I can easily see what they do by reading their names. Today I created a couple of new views and I decided that I needed to rename some old o...
A Simple Routing Solution with Node.js
A few days ago I wrote about not reinventing the wheel. Today I'm going to talk about the opposite. If you're building an 'enterprise' grade application, reinventing the wheel is almost always the wrong thing to do. This blog however is something I ...
Overhaulin'
Tomorrow (actually today when I write this) my daughters day care is closed and I get to spend the day with her at home. That meant that I could stay up late tonight and do some work on the blog. The last few days I've felt that the file sizes were ...
Double linked paging in CouchDB
Yesterday I said that I would look into paging, as my post count had reached 10+, so that's what I did today. Paging in CouchDB isn't all that straight forward for a bunch of reasons that I'll try to explain. Firstly, to be able to query anything i...
Somewhat backwards compatible
I got the chance to see my blog through the eyes of Internet Explorer 8 today, and boy was that something to behold. There was no styling what so ever. It looked like the internet pre 1995. This site uses HTML5 and CSS3 and that is fine for most mod...
The Archive
While looking at my Google Analytics statistics I noticed that my empty archive page had almost as many hits as the front page. And so, with little to loose, I set out to create a dynamic archive. Now I don't even have paging on my front page yet, ...
Bring in the spammers!
And the blogger said; "Let there be comments!", and he saw that it was good. I just finished a first 'draft' of a commenting system. Please don't abuse it....
Running on Couch
I'm home from Øredev and I just couldn't resist using some of my new found inspiration to get some work done on the blog. Apache is no more! The blog now runs fully on node.js and I even got around to putting all my static blog posts into Cou...
Experimental server is up
I've put up a node test server running on port 1337 (it was already forwarded to my server for reasons forgotten by me) and I configured node-static to take care of all my static files. If you want give it a go, head to http://www.lofjard.se:1337 (E...
Trying to fix SyntaxHighlighter on mobile browsers
I recently incorporated the SyntaxHighlighter by Alex Gorbatchev so that I can easily show code examples in a nice way. The default configuration seems to have a few quirks when it comes to working on mobile devices. Not all of them are SyntaxHighl...
Responsive Web Design
Responsive web design is the new rage in HTML. As much as I dislike buzzwords, this one is actually something worth thinking about. Scott Hanselman wrote a blog post on the subject a while back and James Fuller has it at #5 on his top 5 list of thi...
The magic that makes it all happen
If you're reading this blog I expect you to have a somewhat technical side to your personality and thus I assume you have a pretty up-to-date browser. This blog is made with HTML5 and CSS3 and at the moment I have not done any work at all to make i...
That time of the year
I once again have come to realize that I've ignored my blog, yet again, for an extended amount of time. When this happens my usual response is to delete all my old posts, change the layout and start over. This time, however, I thought about, for a w...