“I'm an experienced web developer and software engineer. Welcome to my blog. If you need to reach out you can continue the conversation with a tweet to @geedew. I hope you find what you are looking for here. You can also find me on Github and StackOverflow.”

Displaying and escaping characters in Hexo

Hexo has a simple method for displaying characters that need to be escaped; using the raw and endraw tags. It’s possible to use the backtick character provided by Markdown to display the special characters and Hexo provides the {% raw %} {% endraw %} option to capture raw information not to be interpreted by Hexo, but hexo cannot support all strings. Like in the case of mixing the backtick ` statements provided by Markdown. The trick to be able to display any backticks (`) is a combination of the raw and endraw as well as using multiple backticks.

# Here is a codeblock using 3 backticks

# Render a backtick in Hexo
``{% raw %} `{% endraw %}``

# Rendering {% raw %} and {% endraw %} in Hexo
`{% raw %} {% {% endraw %}{% raw %}raw %} {% {% endraw %}{% raw %}endraw %}{% endraw %}`

The Case for Critical Assets

When it comes to first impressions, it can be said a website is made or broken by them. A modern website that relies heavily on scripting is likely self inflicting a performance hit. This hit can be caused by the generic advice given for speeding up a website, ironically. Many web speed tests give an immediate failing grade for not using a content delivery network (CDN) for every single one of your assets. But in the case of critical scripts and styles, this can be the exact wrong advice.

Critical scripts and style are the assets that must load prior to effectively loading content. For instance, a site might use Modernizr to sniff for features to further load content or other scripts. It might use jQuery to create DOM elements and place them on the page. It also might use @media queries to alter, import or change the layout of the page. If any of these situations exist, a new or returning user will have to wait for that file to load on the page prior to being able to view any content. I’m not going to argue if a site needs to be doing those things first, but if it is, then it’s going to cause a ‘hiccup’ for first time rendering. A cached asset may negate this on further loads and that’s why caching and cache control is a good thing to use. But this does nothing to help a first impression.

[caption id=”attachment_571” align=”aligncenter” width=”500”]DNS lookup times are killing time DNS lookups are killing time[/caption]

Read More

jQuery Dialog Shadow Issues.

While working on a dialog in the new jQuery UI 1.6rc6. I have come accross an issue.

If you were to open a dialog, and then dynamically change the content in the dialog, the shadow border will not resize. The problem is, the code does not ‘know’ the box is larger, and is not able to watch for the changes. Their have been some solutions that I have found to solve this, like turning off shadows, etc. But I think I have a better one, a 3-line solution so to speak
Go into your code, mine is in my jquery-ui-personalized-1.6rc6.js file… Also could be in ui.dialog.js etc.

Inside the code (mine is line 4218) after this function

$.widget('ui.dialog', {
_init: function() {

add this function

refresh: function() {

Then from within your code you can call something like this…

Check for updates, I may write a drop-in style patch so the coding isn’t necessary.


Saving Battery on your Lenovo X61 in Linux

here are some issues with the power manager in ubuntu and tablet. There was alarge discussion you can find here.

But basically to save power and time you should run without atime by following these commands

Make sure you have vim-full installed

sudo apt-get install vim-full
This is a powerful editor, the lite edition is confusing to some, ignore this if you would like to use gedit (think graphical editor) just replace `vi` with `gedit` in the commands Next,
sudo vi /etc/fstab
Find the line that looks like this, _ UUID=65d4f3af-6###-4767-b###-4aa28b61b### / ext3 defaults,errors=remount-ro 0 1 _ Do not copy my line, your likely to have issues if you do so. Make the line look like this by pressing `insert` and moving the pointer to the place and typing in the text, hit 'esc' and then 'shift + v' twice _ UUID=65d4f3af-6###-4767-b###-4aa28b61b### / ext3 defaults,errors=remount-ro,**noatime** 0 1 _ Restart your system or run this command
        sudo mount -o remount /

Updating Ubuntu to Newest Wacom

Most users of linux need not be concerned with updating Wacom. But there are many out there that should be. Namely, those that are using tablets or have a tablet PC. Wacom is probably the number one driver manager for tablet hardware in linux. Unfortunately, it’s a driver that too often gets fuddled with and not upgraded.

You can check your current version by running this command in a terminal (Applications->Accessories->Terminal)

dpkg -p wacom-tools  | grep Version

You should get an output of something like this

Version 1:08.1.4-0ubuntu3

If that has 08.2 instead of 08.1.##, then you can disregard updating (Understand that this post is from Dec 08, a new version can be found here when they come out).

To solve this, you should always keep your wacom updated to the newest version. As with this post, the newest version is 0.8.2 (The Linux Wacom Project). Intrepid Ibex, the current release of Ubuntu, ships with .8.1-4. .8.2 adds some new features, like better touch support. Users with an X61T like me would LOVE to have this back after frying Vista.

First thing you should do it download the newest version here - 0.8.2

**This is a pre-built binary. If this doesn’t work for you, you should read below.

Download the file to your Desktop and unpack it using the archive manager. You can delete these files when your finished.

Run these commands

cd Desktop/linuxwacom-0.8.1-6/prebuilt

sudo ./uninstall

sudo ./install

The last step is to press ‘ctrl + alt + backspace’ to restart your X11. This will log you out of X11, so make sure to save anything you have open.

For those users that are unable to follow these steps because of errors. You may need to compile the drivers on your own. You can find out the information on how to do that here.