Building a Go(lang) API with echo and MySQL

In this post we’ll have a look at how to build a MySQL backed API with Go and echo. This is part of the series that explains how we did photographerexcuses.com

The site is a Vue.js single page app, that gets its data (the excuses) from the Go API. We are storing the excuses in MySQL, because we can easily edit them at the same time with MySQL workbench or similar tools that don’t require flat files, git or other methods that would be more annoying to deal with.

Continue reading “Building a Go(lang) API with echo and MySQL”

Making of: Photographerexcuses.com

This is a short list of posts that describe how we built photographerexcuses.com using Go and Vue.

In the end we just found a bunch of silly excuses like

I don’t use Photoshop, it feels like cheating.

or

I didn’t know she was the bride.

and it took the biggest photo blogs on the net by storm, which was quite a surprise to us.

Continue reading “Making of: Photographerexcuses.com”

Best Cheap VPS Hosting Comparison (2017)

What are the greatest and cheapest VPS servers out there? Here’s a list of providers that offer developer friendly virtual private servers that make it super easy to spin up a new server in minutes.

My most common use cases for me are either starting new projects for pages, webcrawlers or to put client projects in a staging environment for them to preview it. I write my projects with a variety of languages and stacks, most commonly: Node.js, PHP (Laravel and WordPress) or Go, backed by xSQL or MongoDB.

Continue reading “Best Cheap VPS Hosting Comparison (2017)”

Quick Tip: Keep ‘Find Next Word’ with Vim Mode

A common annoyance when setting up atom on a new machine is that one of my favourite packages, vim-mode-plus keeps overriding a native setting, that I want to use. The nice select the next occurence of this word or variable feature is overridden by vim-mode-plus:scroll-half-screen-down, which honestly isn’t that useful at all.

All you need to do to revert the plugin from occupying a key binding is to open your keymap.cson and to insert the following:

'atom-text-editor.vim-mode-plus:not(.insert-mode)':
    'ctrl-d': 'native!'

Continue reading “Quick Tip: Keep ‘Find Next Word’ with Vim Mode”

Golang: Arrays of Strings

This post is going to be about Golang, arrays and strings. In Go we have more than simple arrays that we know from JavaScript or PHP. They are basically divided into the following:

  • arrays
  • slices
  • maps

This was confusing to me at first, because in basically every language I knew I could change the length of an array by just pushing things to it. Not so; in Go.

Continue reading “Golang: Arrays of Strings”

history.pushState and IE SCRIPT5022: SecurityError

I stumbled upon this error in Internet Explorer when I wrote my Redirect Checker and discovered that JavaScript Errors that imply an attempted security violation, that on top of that are not wrapped in a try-catch block, will totally disable your whole script execution.

I had code that looked something like this:

Continue reading “history.pushState and IE SCRIPT5022: SecurityError”

Google Webmaster Tools: Add HTTPS as separate property

Google Webmaster Tools tracks http and https on separate properties. God knows why. I had a small heart attack when I visited the dashboard and saw that my domain seemed to have vanished from search result pages and that the only thing people found my site on was a post about mining bitcoin.

It’s been a while since I switched a couple of domains to https through the awesome people at Let’s Encrypt, but I absolutely forgot that the Google Webmaster tools would not pick up search engine traffic to my pages after making use of the new URLs.

I just added https://jonathanmh.com to the tracking and voilà:

Everything seems alright again 😉 I’m off to doing that to a bunch of other domains now.

Webpack Sass / Scss compiling to separate file

Webpack is an amazing tool for transpiling and bundling JavaScript, but it can also take care of compiling Sass or Scss to static files.

get the code on github

I came across this issue while developing a prototype and not a single page app, that I needed to have a .scss file include some other files and output a .css file. I didn’t need inlined and scoped CSS like one would probably do with a single page app.

Continue reading “Webpack Sass / Scss compiling to separate file”

Tracing or Preventing HTTP Redirects in Golang

In this post we’re going to have a look at how to have a close look at HTTP requests processed by Go and how to prevent automatic redirection through 301, 302 or similar redirects. This is useful both for investigating tracking links from twitter, buffer, bit.ly or email marketing, or to make sure your tools to generate them actually work 😉 For a demo, check out the Redirect Checker Tool

Continue reading “Tracing or Preventing HTTP Redirects in Golang”