Random Notes

Viewing posts for tag programming.

Elixir: Time for Some Configuration

Configuring Elixir applications is a common problem point for new developers and I’ve seen many questions about it in the community chats. So I thought to write down my knowledge in case it helps anyone.

Read more…

Pure TypeScript Setup for Simple Projects

I’ve long had certain issues with modern web development, and I even wrote a little tool of my own to help me manage such an environment. So I look for ways to minimise the complexity of my setups while still maintaining some modern conveniences. Now I’ve started to use a setup that relies on TypeScript and modern browsers’ builtin features. This is a very minimal setup consisting just of TypeScript, plain CSS, and maybe a tiny build script.

Read more…

Node.js Profile Processing Taking Forever

I was doing some Node.js V8 profiling work at the office near the end of the day and noticed my profile processing was taking a long time. I figured it is just processor intensive and left it running for the day while I went home. To my surprise, the next day it was still running! htop showed me it had accumulated 12 hours of CPU time and was still not finished. This led me to track down a related issue and how to fix it.

Read more…

Changing User-Agent Header in an Atom Editor Plugin

When improving Code::Stats’s Atom plugin, I wanted to add the plugin version as the User-Agent header: code-stats-atom/x.y.z. I used the fetch API and set the header there but it did nothing! By googling a bit I found that User-Agent used to be a “dangerous” header that wasn’t allowed to be set in browsers. It was only recently allowed, but Chromium has not implemented support for it.

Read more…

MBU Published to Hex.pm

People commented so nicely on my first build tool FBU that I decided to push it to the Elixir package manager Hex.pm. I renamed it, though, since people pointed out that it could be used to build anything, not just the front end. So now it’s called (still unimaginatively) MBU: Mix Build Utilities.

You can find it at hex.pm/packages/mbu and the docs are in Hexdocs.

FBU: My First Build Tool™

EDIT 2017-04-04: I have since renamed the project to MBU: Mix Build Utilities and published it on Hex.pm: hex.pm/packages/mbu. I have edited the links and code examples in this post to reflect that.


tl;dr I wrote my own build tool using Elixir’s Mix: Nicd/mbu.

It’s no secret that I somewhat dislike the state of modern web development. JavaScript is its own terrible world, but one of the sad parts of it is the ecosystem and tooling around it. There’s a lot of innovation and hard work going on in very many fragmented projects, resulting in reimplementations of already solved problems and a ton of half working, alpha quality, 0.x versioned packages with unknown support status. With these packages, you start your project by building an elaborate house of cards that is the build system. And you dread the day when you need to touch it again.

Read more…

Mebe and the Remote Shell

What better way to spend a slow weekend than by writing another blog engine? Plenty, actually, but that’s what I did anyway. The result of this work: Mebe! This blog is now powered by a wonderful mix of Elixir and Phoenix. It has all the features that Laine had, with the addition of an actually working Disqus comment system. It’s also search engine indexable, which I thought I didn’t care about, until I didn’t have it anymore. Not that I’m aiming for tons of visitors, but writing about some tech problem I have fixed is kind of pointless if no one can find the post by googling for it.

Read more…

Nurina – The Elixir URI parser

I had some free time this weekend, so I decided to pick up on an old piece of code I wrote back when I started learning Elixir. It’s a URI parser I called Nurina (the word nurina is Finnish and means grumbling or complaining — it sounded funny and it contains the word URI). It’s not really a well put together piece of code but more of a learning excercise. I also decided to avoid using regular expressions entirely and instead used pattern matching to parse the whole URI — an additional challenge.

Read more…

Pitot on OpenRepos

As my first OpenRepos release ever, Pitot is now available for download there. You can find it here.

This is just a temporary step to get the app available for people until it is accepted in Harbour, the Jolla app store.

Pitot released

Pitot — my SailfishOS GPS/GLONASS speedometer app — has reached a state where I’m confident to release it for others to use. You can download the RPM in the BitBucket repository.

Some screenshots showing the basic functionality below:

Screenshot 1

Screenshot 2

Screenshot 3

Some notes about the accuracy when using with the Jolla phone:

The app is feature complete and I’ll just wait until QtPositioning is allowed in Harbour to publish it. There’s still one little problem, the font is really jagged and ugly. I tried following a Jolla employee’s instructions in setting the text’s renderType to Text.NativeRendering but it seems to have no effect. I’ll take a better look at that later. (Also the logo is quite ugly, but I’m bad at graphics, so any help on that would be much appreciated!)

If you encounter any problems, I’d appreciate bug reports or even pull requests in the BitBucket repository!