“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.”

Fixing GIT Branch and Tag Name Collisions

A basic understanding in Git is that Tags are aliases to a commit hash (A single entry in the history of commits) whereas a Branch is the name for a diverged chain of commits that share a common history and ancestor. Confusion can be had when assuming a branch is always the HEAD, or most recent, commit in the fork of the code. While this can be true, this is not what a Branch represents and may lead to Tags being used interchangeably with Branches. When Tags and Branches are both used, they give flexibility to teams to share commit history and easily communicate important changes in code, but naming them similarly will lead to collisions if not well thought out.

Take care naming tags and branches to keep from confusing Git

Read More

Updating this blog

Earlier in the year, the Geedew blog was going through a bit of downtime. Mostly this was caused by the incorrect installation of Wordpress settings. Geedew.com is deployed and ran with Ansible, and Wordpress was simply too much for how little is actually hosted here. Also, Geedew.com was slow and quite ugly. Not exactly amazing work for a professional web developer. The server needed to move and new things needed to be tried.

Wordpress must be removed.

Read More

The importance of processes

What’s the first step taken to any project, whether at home or at work? Is it an idea? A problem that requires a solution? A request from an associate? How is it that this project takes the next step and eventually comes to a conclusion? What is the next step?

Something comes next, or nothing gets done

Read More

Quick tip with Typescript, Use moduleResolution


One of the first items to not miss or be confused about when starting a typescript project is to set up the tsconfig.json to contain how to resolve the paths for inclusion in the app being built.

In my case, being reminded to use the node resolution strategy for importing from the node_modules folder was a requirement.

"compilerOptions": {
"target": "es2017",
"module": "es2015",
"sourceMap": true,
"moduleResolution": "node"

Also see some further examples here.

Using AutoHotkey with Surface Pen


This is a scripting language designed for Windows to automate some usage. A lot can be accomplished by re-mapping the inputs.
While Windows 10 does allow apps to be loaded by the surface pen, however, these can be messed up and are very limited. What if the pen’s single click was “Copy” and the double-click was “Paste”? Something like this is easily achieved with AutoHotkey.

; remap surface pen button to copy to clip-board

Simple mappings can be achieved with short-syntax, however the surface pen tends to have some problems with this when turing off the hotkeys. More success can be had by using the full syntax and applying the down and off state.

#F20::Run Onenote ; Single click, Open OneNote
#F19::Send, {Shift down}{LWin down}s{Shift up}{LWin up} ; Double click, Take a screenshot into onenote (hotkey created by onenote)
#F18::Send, {Control down}{Shift down}{Alt down}x{Control up}{Shift up}{Alt up} ; Hold button to trigger snippet tool (hotkey created within Windows)

This is the beginning of using AutoHotkey. It’s been around for many years and has thousands of options that can be scripted including mouse moving and deep Windows interactions. Check out https://github.com/dantheuber/WinTop-AutoHotKey for one of my favorite ways to keep a window on top with a transparency.