pseudoramble

I'm sort of used to React hooks now. I'm not sure how I feel about them. Sometimes good, sometimes not so confident. But I like them enough to essentially not use class components anymore.

One thing I keep wondering about is where to use them. They seem like they'd make a easy shortcut to avoid container components. Often I end up passing props from hooks to functional components anyway. So maybe that would be best.

On the other hand, you're then on the, hah, hook, for carrying the effects and state it uses indefinitely. It also makes unit testing clumsier since it often requires a mock somewhere, which is a bit tedious.

One idea while writing this – Implement one module with two components. One is the core visual/functional component and the other sets up the hook and other effects.

export const Comp = props => ...

const ConnectedComp = () => {
  const x = useSomething() 
  return <Comp x={x} />
}

export default ConnectedComp;

Then you can clarify the unit tests, but also not have to do as much prop passing later on. I sorta feel like this is higher order components in a way, which don't seem as common anymore.

Maybe I should stop worrying and use hooks where I need them instead.

My last blog has been long ignored. I had recently become more interested in having a more convenient way to write from my phone, as well as my computer. I am still interested in self-hosting/VPS hosting too.

So now, I'm starting up this new blog with WriteFreely and self hosting it. There were quite a few bumps along the way, and given how the past 12 months have been, it's taken me a real long time to get solid chunks of time to stand it up. But here we are!

I've been able to import a few entries back into Writefreely. Lucky for me I chose to use Markdown for writing in general. So you can scroll back and check out older entries. For now too, my previous writing spot works fine too.

Here's hoping I'll be writing more!

Around October or November of 2017. I walked upstairs in my previous apartment, sat down at the desk I'm at now, and thought to myself:

Alright, time to write some code. This should be fun!

With a faint idea of something to work on, I popped open Visual Studio Code, and then sat here for a while:

An empty, sad Visual Studio Code window

Read more...

Some days, I get complacent. So complacent, in fact, that I let myself slip into thinking I know Javascript. If this fact alone doesn't make you sigh, well, thanks for your understanding. Here was today's unexpected adventure.

Read more...

This is a series about trees! Search trees, that is.

To recap Part 2, we built ourselves a BST to track our favorite usernames. This lets us add, remove, and find these usernames in “logarithmic time” which means the amount of stuff we look at is cut in half at each step.

However, we saw one of the issues with the plain BST. The performance is directly impacted by the order elements are added. This isn't great. So let's explore an option to overcome this limitation which is generally speaking known as a self-balancing binary search tree. Our specific pass at it is known as a AVL BST.

My code for implementing an AVL BST in F# if you want to jump right in.

Read more...

This is a series about trees! Search trees, that is.

To recap our story, we love usernames. We collect them, and so do our friends. We love to compare our lists of usernames together to see how they're similar. This is tedious though, so we decided to sort it and search through it. Much better, but keeping this list sorted is a project in of itself.

So let's build ourselves a method to keep better track of these lists. We'll implement what's called a Binary Search Tree for this.

My code for implementing a BST in F# if you want to jump right in.

Read more...

This is a series about trees! Search trees, that is.

Read more...

A brief moment on copy-paste. Copy-pasta, if you're into that kind of dish.

I whine about copy-paste often. I whine about it at work a lot. I whine about it to the point where the joke “look out, pseudoramble will be angry if he sees you copying-and-pasting!” is a fan favorite.

I have my reasons for whining about copy-pasta (mainly that I've made these mistakes). I wanted to make my own thoughts both more clear and less hard-line than I've managed to set myself up for.

Read more...

Something that's easy to forget in the world of software development is that testing is a major time investment. Testing has a variety of meanings depending on the context of course. But here we mean attempting to show software correctness by exercising code.

I've recently been poking around at a form of testing known as property-based testing.

What's a property-based test?

To quote the website Abstractivate:

“Property-based tests make statements about the output of your code based on the input, and these statements are verified for many different possible inputs.”

Property-based looks at the input & output of a function to describe details about the output itself. A description is provided for the parameters needed for that function. Test data is then generated from these descriptions, which helps tease out harder-to-find scenarios.

Read more...

After about 1.5 years with my previous workspace setup, a move to a new apartment, and a Facebook ad, I felt the need to try out a new desk.

Current Setup!

TL;DR

  • After about a week with this desk, I'm happy with the end result.
  • The desk is the SmartDesk2 (Autonomous.ai).
    • Electric standing desk with presets and automatically raises to that setting.
  • Price can be as low as $250 (before shipping).
  • If you're on a timeline to get a desk, you need to look elsewhere.
  • Setup is straightforward, but some easy-to-make mistakes.
  • Quality of the desk for the price is impressive.
Read more...