hjertnes.blog

Adding elements to an array

29.11.2017 01:00

I spend a lot of time on this site trying to convince people that immutable data structures are the way to go. They might be a little bit more difficult from time to time, and a little bit slower; but I believe it is worth it because when you use immutable techniques instead of mutable you know that you need to actually tell your code “replace this with this” for something to change. And I believe it is a good way to avoid a lot of annoying bugs.

The standard way to add a element to a array in Javascript is using the push method like below:

Or you could do it with concat, which is the way I prefer to do it:

The result is the same, but with the latter you can do what ever you want with the list, without worrying about fucking up the original, before you explicitly tell it to be replaced.

Splice

28.11.2017 01:00

Splice is another mehtod on the Array Prototype; it is in many ways Slice’s weird brother in law. The main difference is that splice mutates the array you run it on, while slice does not. I personally never use splice because mutation often lead to unintended circomstances.

The other thing about splice is that you can’t do all of what you can do with slice; for example the cool -1 tricks for removing stuff at the end. This is where it get’s a little bit “weird”. You can use it to remove stuff from an array. It takes a start argument and a number argument, for example like below (removing the two first elements)

But you can also feed it any number of elements after the number argument which will be inserted where you removed the elements. Splice can be very useful, but be careful, because everything is just weird enough that it is very easy to do something you didn’t want to and cause some difficult to spot bugs.

Let me end with the key differences between slice and splice:

  • Splice mutates

  • Slice doesn’t mutate

  • Slice works with start and end position

  • Splice works with a start position and a “deleteCount”.

  • Splice can also append elements.

#

27.11.2017 01:00

The emoji for American power outlets: 😮

Ink Review

27.11.2017 01:00

I received this 30ml bottle of ink free of charge from Tudos, for the purpose of reviewing it. Tudos have been very supportive of The Ink Smudge since our paths crossed, and I would recommend checking them out if you live in Norway. I buy all of my notebooks from there

Funny thing, I can never for the live of me remember what this ink is called. I always have to reference my “Transparency” page.

This is my first bottle of ink, that isn’t from Iroshizuku in a few years. I got to say it, the experience is very different.

First of all, I love the ink, the colour is awesome and I enjoyed writing with it. Are there inks I didn’t enjoy using? Yes, I have used inks that feels “scratchy”, and I really hatet that. I assume it was because the ink wasn’t lubricated enough.

But, the bottle feels really cheap. It is plastic. This isn’t all bad. But it is another world than the awesome glass bottles Iroshizuku comes in. I see two problems with it though, the hole can be a little bit narrow for some pens, and there is no design accommodations to make sure you can use as much ink as possible.

Keep I’m mind though, this ink is priced at $7.50 while a Iroshizuku is priced at $30: the latter comes in a larger bottle, but still at least twice the price. ($0.25 per ml vs $1,7 pr ml)

This ink looks awesome. It is kind f weird that I have gotten so into blue inks lately. I used to hate them.

This ink reminds me of those light blue standard inks everyone sends you with their pens. I call it “BIC blue”.

I hate those inks, but I love this one. It is a darker, and looks “just right”. I have tested it with all of my pens and it looks just as good with finer and broader nibs.

The only bad thing about this ink is that the dry time is significantly longer than with Iroshizuku. It isn’t so long that it is a problem. But I notice that it is something I need to think a little bit about.

Keep it in mind if it is the kind of thing that is a deal breaker for you.

Slice

27.11.2017 01:00

Slice is a method on the Array Prototype that you can use to extract a section of a array. Let’s say you want to remove the first two elements from a array. Then you could do something like this:

You could of course do the same with a combination of filters and map without using slice:

There aren’t much to the slice method, but the key thing is that it doesn’t mutate the array you run it on, but rather it returns a new copy. It takes two arguments: begin and end. If you don’t give it a end it treats the end as to the end of the array. And you can give it a negative number of remove things at the end. For example, like below to remove the last three elements at the end; without doing some weird .length hacks or double reversing.

Slice is a very versatile and useful method, when you need to modify a list based on position instead of content. And it much more elegant than some of the other solutions I have seen (and written) to get the same thing. Everything from something like my map + filter hack above to some more advanced uses for the old school for loop.

#

26.11.2017 01:00

My favourite thing about emacs is how easy it is to make a simple function that solves something that don’t work like you want it to, or something that takes too many steps

#

26.11.2017 01:00

Sanity is highly overrated.

#

24.11.2017 01:00

Template literals

24.11.2017 01:00

There exists like a billion templating libraries for Javascript, and I guess many of them exist mostly to get around the problem of: How to generate html without doing that weird "<h1>"+title+"</h1>" problem. It works fine for short stuff, but it doesn’t take a lot before it becomes too cumbersome for anyone to enjoy.

Template Literals to the rescue.

All good programming languages have a way to do something like for example this in C#

This is where one of my favourite features in ES6 comes in, that I always forget to use, because the plus hack is to ingrained in my brain that I always forget to use it:

They are great, and could be used as a mini templating languages, if you needs are too simple to include something like Pug or Handlebars; they do exactly what they say they are, and work great. But I’m not the worlds biggest fan of the use of ticks: `. Mainly because it is kind of weird how they are inserted into text files. Other than that, great.

I get why they didn’t, but I kind of just wish they had broken the String type and let us use ${} inside regular strings.

#

23.11.2017 01:00

Every time I introduce someone to pingdom they “complain” about it being expensive. I think it is cheap, if you take into consideration that it discovers issues in 910 times before our customers does.