Archive for the ‘Tech’ Category

Unbounce

Thursday, January 19th, 2017 | Tech

Unbounce is a WYSIWYG editor for building landing pages. If you have no coding skills, you can whip up a landing page for your business by dragging and drop elements onto pre-built templates.

I have been wondering whether approaching everything as a coder is a distraction from building my businesses online. Maybe I should use more tools like this and concentrate on building the business, not the website code. It certainly does allow you to get up-and-running very quickly.

It also has some good integrations: I can easily drop my MailChimp account in there, for example. It also supports building a desktop version and a mobile version at the same time. As you drag elements in for one version, they appear on the other. You can then toggle between them and adjust each one individually.

Some things I found frustrating. For example, centring text. When coding, I would make the box 100% width, and therefore it would be in the centre regardless of the screen size. However, Unbounce requires you to create boxes with a specific size and then adjust the size for the different breakpoints.

Also, I did not feel it added too much value. Yes, it allowed me to create a page, add some integrations and create A/B variants. That is all useful stuff. But, I could do that myself. It does not provide step-by-step funnels and chain-linking pages that some of the competition seems to offer. I enjoyed my free trial, but ultimately, I have decided I can do without it for now.

OptIn Monster

Monday, January 16th, 2017 | Tech

Earlier this month, I trialled OptIn Monster. It is a set of lead generation tools designed to help you convert visitors into return users. I have been using it on my personal blog, as well as the Leeds Restaurant Guide.

For my blog, I used their footer bar. As you scrolled down the page, a bar would appear to ask you if you wanted to get the blog posts in a weekly email. I like this because it is a not intrusive way to offer some extra value to visitors. It does not stop you reading but lets you know my newsletter is there. The problem was that when the bar loaded in, it changed the font of my titles.

By the way, if you did want to sign up for that newsletter, it is still available: you can find it at the bottom of each blog post page.

With the guide, I used exit intent offers. These are dialogues that appear just as the visitor is about to close their browser tab. In this case, I offered them the first three chapters of the guide for free. Again, that is still available on the guide’s website. In this case, I couldn’t seem to get the offer to trigger.

The toolset itself is a great idea, but the implementation is not perfect yet.

New book alert: How to Exit Vim

Thursday, January 5th, 2017 | Books, News, Tech

It has been a writing-heavy month over at the Worfolk household. On Saturday, I am going to be announcing my new restaurant book. But, between finalising that and sending it to the printers for proofing, I have finished another, and I am announcing that one today.

The title is How to Exit Vim.

For months I have been joking that what would be really useful is a book on all the different ways there are to exit Vim. For those not in-the-know, Vim is a command-line text editor for Linux. It is notoriously difficult to exit once you enter the program.

The truth is, though, that book would be genuinely useful. So I have written it. It comes out on 15 January. You can pre-order it now from Amazon and iBooks.

Mailgun

Wednesday, January 4th, 2017 | Tech

Mailgun is an email sending service made by Rackspace. Specifically, it is designed to be used as an API for sending automated emails.

This is different from a mailing list manager such as MailChimp or Infusionsoft. These allow you to build up a mailing list and send out newsletters. Mailgun is designed to be used by web applications looking to send emails behind the scenes. For example, I use it in my IT contracting course to send out welcome emails when someone registers.

Setup is relatively straightforward. You register, enter your domain name, and then Mailgun gives you a whole host of DNS entries you need to add to your domain. You are then given an API key that your scripts can use to send messages out from. They have a PHP library you can bring in via Composer (and libraries for all the other languages too), so it was just a case of wrapping that in my own code.

Best of all, they have a free tier: you do not pay anything for your first 10,000 emails.

Of course, the real test of success is delivery rates. Time will tell whether that is successful or not. However, my old solution was setting up a gMail account and sending email through their SMTP servers is unreliable (Google occasionally thought I was being hacked and locked my scripts out) and meant the email was coming from an @gmail.com account, which is not very professional. So, this promises to be a big improvement even if delivery rates are only just as good.

Problems validating iTunes Podcast

Friday, December 23rd, 2016 | Tech

traditional-microphone

Recently I launched the Worfolk Anxiety Podcast and as part of that, submitted it to the Apple iTunes Store for listing. The problem was that every time I tried I would get an error:

Unable to read your feed

After searching the web I found a lot of reports that Apple only had limited support for SSL: there were only eight trusted providers and you could not use anyone else. For example, any certificates issued by Let’s Encrypt would not work.

However, this did not make any sense because I had a GeoTrust RapidSSL certificate, and GeoTrust was supported.

I emailed Apple support and we began a backwards and forwards discussion about it. They suggested that although my feed validated on most validators, there were a few that it did not and I should address these issues. The issue was that you cannot use SSL in the strict RSS standard because URLs must begin with http and not https.

I fixed this, and still nothing.

I even tried purchasing an SSL certificate from Comodo in case Apple had a problem with the RapidSSL intermediately between my certificate and the GeoTrust root certificate. That did not help either, so I now have a duplicate certificate that is of absolutely no use.

Finally, Apple sent me the command they were running.

curl --head https://www.worfolkanxiety.com/podcast/feed

Suddenly it all made sense! They were making a HEAD request, rather than a GET request. I am using the Rauma PHP framework (that I also wrote) and you have to specify which verbs you would like to support. That end-point is tagged as a GET end-point, so did not respond to a HEAD request.

Once I added support for HEAD requests, it all started working. I even changed the MP3 files and artwork back to HTTPS and it still worked.

I have since rolled out an update to the Rauma framework so that it automatically adds support for HEAD requests when you add a GET request. However, there are many other frameworks where you specify the verbs you want to support, so if you run into a similar issue, check to see if that is the cause of your problem.

Grammarly weekly report

Monday, December 5th, 2016 | Tech

grammarly

I have started using the free version of Grammarly to double-check my spelling and grammar. I have the standard spell checker on of course, but Grammary catches some mistakes that the spell checker does not. Here is my invite link if you want to give it ago.

More interesting, is that Grammarly send you a weekly report with some stats in it. I have just received the first one, and it contains some interesting stuff.

  • I wrote 2082 words, putting me in the 87th percentile
  • I made 16 mistakes, putting me in the 91st percentile
  • I used 464 unique words, putting me in the 85th percentile

Whether Grammarly has found some statistical trick to massage my ego, or just has a dubious user base I am not sure. It seems like the kind of tool writers would use, which suggests the former. Still, statistically I seem to be doing okay.

It is also worth noting that I am only using the browser plug-in, so it does not monitor the writing I am doing in desktop applications.

SSL unable to get local issuer

Saturday, November 19th, 2016 | Tech

If you have installed an SSL certificate and appears to work fine in the browser, but does not work on places like the W3 feeds validator or iTunes Connect, a good way to debug it is to use cURL from the command line.

You may get back an “unable to get local issuer certificate” error.

$ curl https://www.your-domain.com/
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: https://curl.haxx.se/docs/sslcerts.html

If so, this means that you have successfully installed your SSL certificate, but you have not included the intermediate certificates. These form an essential part of the chain up to the root certificate and need to be included when you install it.

They are typically distributed in .bundle files that come with your .crt file.

Want to become an IT contractor?

Friday, November 18th, 2016 | News, Tech

itmc-box If you work in IT, and have considered making the leap from permanent employee to contractor, you are not alone. Many people want to make the transition because they want to…

  • Earn more money
  • Be able to take more time off
  • Be their own boss

The problem is that having a permanent job is easy: you just turn up five days a week and people give you money. Finding the motivation to research contracting is a tough ask, especially when there are so many minefields and potential trip hazards to avoid.

It’s a shame because being a contractor is awesome. I get this immense feeling of freedom knowing that the only person I am truly working for: is me. I like running my little contracting company, I like being able to provide for Elina and Venla, and I like the fact that when I get bored of a contract I just terminate it and move on.

So, to help anyone else who feels the same way but needs some help making the switch, I am launching the IT Contracting Master Class. A course that takes you step-by-step through setting yourself up as a contractor and continues all the way through to what to do once you find your first contract and start working for yourself.

I have been there and done it all already, so I can save you the heavy lifting. The instructions are specific: I tell you exactly what to do and where to go. None of this “well, you could do A, B, or C”. I will give you the options, but then tell you exactly which one is the right answer and why.

Sound good?

You are probably wondering how much I am charging for such a course. That is the best bit: it is free! You can sign up for zero cost and get access to the first batch of lessons, and to my eBook First Steps in IT Contracting. If you like what you see, you can upgrade to the full course at a later date.

itmc-get-started

>Register now for immediate access or visit the website to learn more.

Introducing Bedtime

Saturday, October 15th, 2016 | Tech

introducing-bedtime

Cook: “Here at Apple, we’re proud to announce our latest innovation. It’s called Bedtime, and it can improve your sleep quality by 160%.”
Ive: “Tim, I think bed time is already a thing.”
Cook: “NO, we invented it!”

How we built Rena Men

Monday, October 3rd, 2016 | Programming, Tech

rena-men-september

Recently I launched a new website, Rena Men. It is deployed onto the Heroku platform and does quite a bit of cool stuff, so I thought I would document what I have done here.

Code

It is implemented in PHP, using the Rauma framework. Rauma is a project I developed for Learn Finnish and subsequently open-sourced.

Rena Men is built in several modules. There is a website, a content management system (CMS) and an image server. Because they use common functionality like the entity classes, there is also a shared library which is brought in as a Composer dependency.

The website itself is fairly straight forward. Beyond the PHP, there is only the CSS, pre-processed with SASS, and a tiny amount of JavaScript loaded in with require. The CMS is a bit more complicated, using Babel to transpile the ES6 JavaScript, and styled up with Bootstrap.

Deployment

Each module is deployed onto the Heroku platform. This makes it really easy to do as I can roll out an update just using git push. The code itself is stored in a series of private repos on BitBucket, and the Heroku build process fetches them from there.

In the case of the CMS, it also uses the Node build pack to run a Bower install. Third-party additions such as Bootstrap are pulled in on-the-fly just like we do with Composer dependencies. Heroku does not have SSH key integration for Bitbucket (it does for Github) so I’m using a ready-only account with Basic HTTP auth access.

The database is provided by one of the Heroku app add-ons. The storage is provided by Amazon S3. Heroku is built in AWS, so that fits nicely. We store originals in the file system and then crop them on-demand using the image server.

Delivery

Because cropping images is expensive, the image server originally had a local file cache where it would store each crop. However, as Heroku has an ephemeral file system, you cannot write to it, so I had to turn that off in production.

Instead, we’re using the AWS CloudFront CDN. This was super easy to implement. I just created the settings in AWS, pointed CDN subdomain at AWS and it started working. Like other web proxies, it caches your content based on the headers you send it.