Github issues as my todo list

Introduction / motivation

Some friends and me have a regular weekly meeting. Besides friendly chatter, the reason for this particular meeting is to discuss what everyone has done respectively failed to do. We listen, give feedback where necessary, and the task to actually talk about your tasks is a great productivity boost. At the end of each session the planned tasks for next week will be presented. Additionally everybody has to sent an eMail presenting a small summary of tasks (not) done / tasks todo.

Until now I didn’t really track these tasks, besides some notes in the eMails themselves and some paper scraps. But this changes this year with Github issues.

Github issues

There are quite a lot todo list apps out there. Personally I did try Wunderlist and Todoist in the past. Why would I choose Github (GH for short) Issues over these more “traditional” tools?

Besides a personal preference about the way GH is used, there are two big reasons:

  • templates
  • API

Templates

Github lets you save templates from which you can choose for different issues. Not only can you set the issue text, but also the labels, assignments, and milestones / projects they belong to. For example a template for normal todos with sections for SMART goals, and a template for buying things with a budget section.

API

Automation is sometimes pretty handy and even useful. GH offers a very comprehensive GraphQL Api, which can be used to handle issues.

Further down I describe two cases where the API is used to great satisfaction.

more reasons

The following reasons contribute also:

  • As a software developer I am already comfortable with GH and its UI / possibilities.
  • Githubs UI is in my opinion better for usage on the desktop. (Regarding smartphone useability I have no idea — I generally use my smartphone only for podcasts and chatting.)
  • Progress can be easily tracked with comments and appended files (like pictures).

Automation

There are some Saas platforms like zapier or IFTTT that have integrated GitHubs API. And there are tools you can use respectively self-host that have integrated or at least can be used with the API. Tools like huginn, n8n or Node-RED.

The following two tasks have been automated (for now with Zapier ¯\_(ツ)_/¯):

Book summary issue

After finishing a book, a reminder to summarize the book is created. Not all books need a summary, or have some lasting value, but some do. The reminder is an issue with the book title, read from a Goodreads RSS feed containing my read books.

Weekly check-in

One of the things that can’t be represented in issues are daily or otherwise very often repeated tasks. These I track offline. But a weekly check-in issue to track the overall accomplishment of dailies is a good compromise in my eyes. Just let the automation service create a checklist issue with the current week as title.

Open tasks / questions

Like already mentioned, there are things that cannot really be represented in the GH issue flow. For example things like dailies or otherwise often repeated tasks and deadlines / schedules.

For now I just use the weekly check-in as reminder respectively a calendar.

Thanks for reading!

Buying HiFi music boxes

After repairing my gifted amplifier (Link), the next step was to get some good music boxes. My preferences are mostly metal and rock music, but also soundtracks. The first step in buying something expensive should always be some “independent” research.

Some steps before buying / trying

  1. Check what most people are buying and recommending, and what it costs.
  2. Which feature do you really need? What do you only want?
  3. Cross-reference the needs and wants with the price of the products. Can you get what you need for the price you are willing to pay?
  4. There is almost never a linear progression between quality and cost. At some point, the miniscule better quality is not worth the cost. But there is often a sweet-spot, a point where you get the most “bang for your buck”.

Candidates

Music preferences can play a role in the choice. Depending on your viewpoint between “should replicate the sound exactly” or “should sound how I like it”, some products others like are just not for you, and vice versa. Know what you need.

After researching (hifi-forum is a really good source for audio-equipment opinions if you speak german), cross-referencing, etc. there were three products I was willing to try.

  • Nubert nuBox 513
  • Canton Ergo 670 DC
  • Klipsch R-820F

In the end I choose none of them 🙂

All had great build quality. Sound is of course subjective; the nuBox 513 sounded a bit flat (lifeless?) at my amp in my room — it is often written Nubert boxes have a neutral sound reproduction. Seems I don’t like such sound.

The Canton Ergo 670 and Klipsch R-820F were both great. R-820F seemed to have more bass and highs, while the Ergo 670 were more “clear” with better mod-sections. Bottom line: Some music were better on the Klipsch, while others were better on the Canton…

Luckily my brother did also listen to them, and would have liked to get the Canton if I would chose the Klipsch. I was on the fence with the Klipsch, because I bought the wrong recommended pair…

Therefore my brother got the Canton Ergo, the Nubert nuBox and Klipsch got returned while my final pair was sent on its way.

The arrival and repair

The final pair was a Klipsch Reference Premiere 280 F. In hindsight I am really glad to returned the R820 and got the RP280; they sound even better 🙂

Unfortunately one of them was broken on arrival. The tweeter (which produces the high tones) was dead. But after a short email exchange with the seller, I was able to repair it. After opening the chassis and re-attaching a single cable everything was great.

Summary

Do your research, especially for higher-prices items.
Try and compare.
Buy the correct things.
Don’t be afraid to repair the things (if the warranty is still intact afterwards).

Thanks for reading

Error with wrong API version of node module

Intro

Some npm packages are not pure javascript. If they have some kind of binary, these binaries have to be compiled against the right nodejs version; or else the ABI is wrong. There are precompiled binaries, but sometimes there aren’t or they doesn’t fit the version you need. Especially with electron, which maybe uses different versions…

Problem

Either way, this was the error message

Error: Cannot find module node_modules/sqlite3/lib/binding/node-v57-linux-x64/node_sqlite3.node

while there was a node_sqlite3.node, but in a different /binding subdirectory.

Solution

This stackoverflow post https://stackoverflow.com/a/39463304 has guided me to a package that can rebuild to the correct ABI used: https://github.com/electron/electron-rebuild

npm install –save-dev electron-rebuild
$(npm bin)/electron-rebuild

And that was another problem fixed. Thanks for reading!

New training plan

After some time off training because of moving, work, injuries and laziness, let’s start anew. Some preconditions:

  • Squats, deadlifts, bench and overhead press are the focus
  • Both presses should occur more often, because I also jog and ride my bike every morning, and I intend to add pull-ups and rows.
  • Some hamstring exercise, because I sometimes have muscle soreness after squats respectively deadlifts. Also have to check / learn proper hip hinging.

After taking some inspiration from popular programs like 5/3/1 or Greyskull LP my own plan looks something like this at the moment:

First day

  • 4×4 Overhead Press
  • 4×8 Squat

Second day

  • 4×4 Deadlifts
  • 4×8 Bench press

Third day

  • 4×4 Bench press
  • 4×8 Overhead press

Additional movements, alternating after the main exercises:

Addition 1

  • Rows 3×10
  • Curls 3×10
  • Skullcrusher 3×10

Addition 2

  • Hamstring exercise
  • Ab exercise (wheel, leg raises)

Addition 3

Pull-ups after every training day, more than before.

Linear progression

  • add x weight after successful attempt.
  • back-off x weight after some failed attempts

Considerations

  • Maybe too much back exercises in contrast to abs?
  • Why 4×4 / 4×8? I saw it somewhere and tried it before; I liked the variety.
  • Why so much pull-ups? I want to be able to get 10 in a set. If it is too much, I remove something for better recovery.

How I brew a decent cup of coffee

Just a short post how I make my coffee at home. In case I forget something ^^. We have a coffee automate at work, when visiting relatives I usually get ok drip coffee or horrible capsule coffee.

Therefore I like to taste something different at home: french press coffee. Additionally it doesn’t produce waste and is easy to clean.

0. Tools

  • Beans
  • French press
  • Grinder

The taste of the beans contribute the most to the overall taste. Therefore try different kinds to get a coffee to your liking.

 

1. Grinding

The granularity of the ground coffee powder determines how it should be further processed (https://ineedcoffee.com/coffee-grind-chart/). And the taste changes a bit. Again try different settings to find a granularity that fits your taste.

For a french press I aim for medium coarse. I like to have some fine particles in my coffee.

Boil the water while grinding. Both will be ready at the same time.

2. Pour some water

Fill the glas jar with water until the coffee ground is under water.

Wait 2 minutes und then stir.

3. Fill with water

Pour the remaining water in.

4. Press

After 5 minutes, slowly press down.

5. Enjoy

 

Motivation (and Purpose)

Motivation gets generally a bad rep. I thought so too. But after a short discussion with a friend about discipline, something caught my attention: For somebody having a low opinion about motivation, I sure have lots of motivational quotes, poster, pictures and music in my everyday life.

Terminology

Let us clarify the terminology first:

Definition of motivation

  • 1a : the act or process of motivating
    b : the condition of being motivated
  • 2 : a motivating force, stimulus, or influence : INCENTIVE, DRIVE

Source

Definition of purpose

  • 1a : something set up as an object or end to be attained : INTENTION
    b : RESOLUTION, DETERMINATION
  • 2 : a subject under discussion or an action in course of execution

Source

From my understanding of these definitions, motivation and purpose seem like they need each other. Or at least work well together.

Let me think

The bad reputation stems from the common misapplication of motivation. Everybody knows the meme about full gyms after silvester. Without the desire to fulfill the long-term goal (aka purpose) of being fit, looking good, getting healthy, … there will be nothing that keeps these folks returning to the gym.

If there is no purpose, motivation can be detrimental.

On the other side, what is purpose without motivation? The purpose is motivation enough! Haha, we are not kidding ourselves here. Without small wins, without some form of positive reinforcement or encouragement, the greatest purpose loses its appeal.

If there is no motivation, purpose can be not enough.

Have a purpose. Know why you are doing something.

Enjoy the way. Celebrate some goals, struggle after failures, and if a fist-bumping song helps rising the spirits, then turn the volume up.

Motivation and purpose are on a spectrum. They are neither good nor bad themselves, but what you make of them.

Thanks for reading!

Building my powerlifting platform

I always liked the look of the power- or weightlifting platforms with their finished surface, protective sides and cool logos. Especially homemade ones having an inspiring quote, motive or picture that represent the mindset and goals of the maker just ooze of personality and inspiration.

After recently moving to a place with enough place for a plattform I couldn’t resist and had to attempt one for myself… Well, maybe I searched only for places with enough place 🙂

Prior art

Commonly they are build with two layers of plywood as base, on top of which comes another plywood sheet in the middle and tractor or horse stall mats for the sides. For example like in this post: How to Build a Weightlifting Platform.

I did it differently. Having no garage to train in, my plattform stands in the kitchen — and I didn’t trust plywood and a moderately thin rubber mat to prevent cracking the floor in case I do something stupid.

The materials

– 50 x 50 x 4 cm³ rubber mats, 8 pieces for the surrounding

– 100 x 100 x 2 cm³ rubber mats, 2 pieces for the base

– 200 x 100 x 1,8 cm³ plywood(?)

– 3 litres epoxide resin and 0,75 litres solidifier

– an awesome poster

Assembly

The assembly is pretty much a no-brainer, except for applying and sanding the resin. You can leave the plywood as is, or make it personal by spraying/painting a quote or picture on the plywood or glue a poster on it. Or even something more creative I cannot think of! I choose the poster route 🙂

(1. Optional: Cut parts off of the poster you don’t want.)

(2. Optional: Glue it to the plywood. Easy as that.)

3. Place 4 pieces of the small rubber mats to the left, 4 pieces to the right, and the two bigger mats in the middle.

4. Make a temporary wall for the resin around the plywood so that it resembles a very flat tub. Some type of tape should do it. It should be sealed tight, unless the resin flows / drops through it.

5. Mix the resin and solidifier according to the manual and fill the tub.

6. Spread the mixture evenly. Small bubbles will probably form; try to burst as many as possible.

7. Wait a week. Then remove the temporary walls around the wood.

8. Sand and grate the edges with different types of abrasive paper.

9. Place the finished board in the middle and add your equipment.

(10. Optional: Decorate the rest of the room.)

Result

It is just awesome! I’m really in love with how it looks and performs. It’s radiating in light, but not too much, the natural pattern of the wood is great and the motive really shines and stands out.

There are some very small beauty mistakes like an edge of the poster was not glued and got lifted up, and some really small bubbles here and there. I don’t know if you can really prevent every single bubble, but double checking the correct adhesion of the poster should at least eliminate the first problem.

Looks are subjective, but performance not. The resin is very anti-sliding — there is no way i could move my feet without lifting them off the ground first. And the whole plattform is rock-solid and even. It feels pretty much like on an indoor basketball court or football field.

Idea behind the chosen picture

The picture got chosen not only because of the kick-ass Bowser illustration itself. If you don’t know, Bowser is the main villain in most Mario games. You have to literally rescue the princess and defeat the final boss Bowser. But it’s deceiving. There will always be a new game, where you have to defeat Bowser again. Or another game with another “final” boss. Or you just play the same game over and over ¯\_(ツ)_/¯

The conquering of a goal usually never means the end. There will be new goals, new bosses. In a way, the final task in achieving a goal isn’t even the real goal. The way to reach the goal is the real struggle, the real villain. Like in a game, like in training. Once you reached your final boss, you’re already grown so much that the fight isn’t even that important anymore.

That’s the idea, and what I never want to forget.

Acknowledgments

Many thanks to my friends Sebastian and Robin for their manpower in grating and final placement of the equipment! And to my brother Benjamin for the technical guidance and general help — you can find other interesting articles on his blog (in german), for example how he build the squat rack (parts 1, 2, and 3) seen in the pictures 🙂

Thanks for reading!

How to start an Electron + Vue + Typescript project

Prelude

For a new, to be announced, project, I needed to combine some technologies I am not yet accustomed with.

GUI: I decided to write the GUI in Vue. Vue is a toolkit to write “modern” HTML/CSS/JS front-ends. Why not React you ask? Because be use Vue at work, and it cannot harm knowing it also a bit. Plus it is called beginnner-friendly and looks pretty similar to React.

Backend: Either a dedicated server, or something with integrated browser. I choose the latter, because I want to try Eclipse 🙂 Eclipse has an integrated Browser engine (Blink from the Chromium project), has APIs to interact with the desktop and can also run the “backend” part alongside the front-end.

Language: Typescript, because also want to try it 🙂

How to start an Electron + Vue + Typescript project

There were some problems in getting started, because the three projects evolved pretty rapidly in the last few months. Thus many posts or tutorials were already outdated, as well as popular templated like https://github.com/SimulatedGREG/electron-vue.

install Vue CLI

install Vue CLI with

$ npm install -g @vue/cli

create a new Project

create a Vue project with your project_name

$ vue create project_name

You can now choose between a default plugin preset, or choose manually the ones you need. You can always install missing plugins later, if you are unsure of your needs.

Vue CLI v3.5.5
? Please pick a preset: default (babel, eslint)

install plugin electron-builder

go to the project folder, and install electron-builder with

$ vue add electron-builder

add Typescript support

add typescript support

$ vue add @vue/typescript

That’s it!

you can now run the electron app via

$ npm run electron:serve

Have fun!

Fixing my mouse

Problems were false double-clicks and keep pressing gets interrupted. Intermediate measures are stacks of papers to get more pressure on the buttons. The screw holes are as expected below the glider-pads and the sticker — Caution!: the screw in the middle needs to be turned the other way …

In case the problems manifest again: the button switches can be easily purchased online.

LEDs / Wake-up Light, 2

The high power LEDs are there 🙂
5 pieces rated at 3W, which is roughly equivalent to a 40W light bulb.

But unfortunately I didn’t do my homework; they are not running with 12V, but with much less.
I could regulate the excess voltage by just turning it into heat with a resistor, but this seems a) highly inefficient, and b) every LED will get hot and needs at least a passive heatsink — with even more heat I surely need active cooling, which i would like to avoid.
The other possibility is a constant voltage / current source, which regulates the voltage (and current) more efficiently. Without much cons, in contrast to possibility heat.

Now waiting for the delivery.