Sunday, June 17, 2018

New web application

I developed a new web application and deployed it on my VPS. It has a HTML + Javascript frontend and a Nodejs backend. The app daily checks if a certain Turkish law (4734 Kamu İhale Kanunu) has been changed and informs the people on the email list.

I used Nodemailer and Mailgun to send emails. I first tried Gmail but it blocked messages to other emails, so I switched to Mailgun.

Thursday, May 31, 2018

How to follow up

When you assign a task to someone else or wait for their input, ask them when they think they will finish. If they say "I don't know", ask them when they will be able to estimate. Note that date in your personal notification system (e.g. Google Calendar). When the day comes, send them an email about the status of work and a new finish date estimate. If they don't answer your email within a day, call them or have a face-to-face meeting. Repeat, don't let them off the hook (!) Otherwise, many tasks are forgotten and drag on for months. I have personally experienced tasks where the initial estimate had been three weeks and were actually finished in three years, I kid you not!

How to get novice engineers up to speed without wasting time

Fresh engineers are usually not of much use in design work. If you involve them too early, they will mess things up, ask too many questions and waste everyone's time. The best strategy is to assign them improvement of documentation and testing of an existing system. Since they don't know much, any difficulty they have is an opportunity to improve documentation and procedures. That way they can acclimate to the work environment and be useful from day one.

Another important point is to get frequent feedback (e.g. with daily Scrum meetings) because they will retain only 50% of what they have been told and veer off course pretty quickly if not course corrected. Ask them to log in daily comments to the issue assigned to them in the issue tracking system (e.g. Jira).

Wednesday, May 30, 2018

Smallest negative double in Java

In Java Double.MIN_VALUE is the smallest positive double value. This different for Integer and Long classes: Integer.MIN_VALUE and Long.MIN_VALUE are the smallest negative values. If you want to use the smallest negative double value, you have to use -1*Double.MAX_VALUE.

Wednesday, May 23, 2018

Visual studio tools / extensions and code snippets

Tools/extensions that I use with Visual Studio:
  1. ReSharper: For effective refactoring. Roslynator is a free alternative.
  2. Match Margin: "...highlights text in the editor for matches of the word under the caret". Note: This can also be done by highlighting the word and pressing ctrl+f
My code snippets can be found in Gist.

How to teach a child to discover truths

Recently I was talking with a friend who has a 3 year old daughter about how to best rear a child. My own son is 5.5 years old.

Whenever my son has a question with a non-trivial answer, e.g. what resources are needed to build an umbrella in the game Don't Starve, my reaction is "let's ask the internet" and I show him that most questions have an answer when you know how to look for it. I don't want to be the father who knows everything but rather who knows how to find things out.

Of course, there are much more to discovering the truth, like asking correct questions and honing his bullshit detectors, than these simple exercises. He needs to grow up a little for that.

Wednesday, May 09, 2018

İlginç bir ifade

Bugün bir dokümanda gördüğüm ilginç bir ifade:
...nazik yardımlarınızı rica etmekten şeref duyarız.