Thursday, February 7, 2019

A very simple, raw Win32 WinLamb program

Months ago I noticed that WinLamb was missing a simple, introductory example. I never really had time to write and publish one. Until today.

Click lines is a very simple program, inspired by Charles Petzold, which draws lines upon mouse clicks. Just this. It’s intended to be a very simple showcase of WinLamb, showing how to create raw windows, raw custom controls, and handling messages. I usually use dialog boxes on my real-world programs, but for this one I really kept it bare-bones, with no dialogs.

I hope it can be useful to anyone interested in WinLamb.

Thursday, January 24, 2019

Git commit with specific date

Very interesting Git option I just found: --date. When making a commit, you can specify the date manually. However, if you make a new commit with a past date, it will still be shown as the last commit, even with a date prior to the previous commit.

A new commit at January 1, 2019, 12:00, specifying timezone UTC-2:

git commit -m "Comment" --date="2019-01-01T12:00:00-02:00"

Changing the date of the last commit, using UTC+0 as timezone. Will be prompted to write the comment:

git commit --amend --date="2019-01-01T12:00:00Z"

This goes hand-in-hand with this current date trick.

Friday, January 11, 2019

Node.js script to kill a JBoss instance

I’ve been dealing with consecutive JBoss restarts lately at work, and I needed a quick way to kill a running JBoss server instance. First I wrote a PHP script, but then I translated it to JavaScript, so it could run upon Node.js, which I’m using a lot lately.

I’m using it a lot.

Tuesday, January 8, 2019

Reading a file line by line in JavaScript and Node.js

While writing a small Node.js utility in JavaScript, I needed to read a text file from disk, line by line, into a string array. I wrote a small utility function to this task, which is async, returning a Promise.

Usage is pretty straightforward:

const readLines = require('./readLines');

async function foo() {
  const lines = await readLines('myFile.txt');
  console.log(lines.length);
}

Wednesday, December 26, 2018

Hot reloading in Node.js

While experimenting with Node.js, I was writing a small webserver to see how the things assembled together. Then I noticed that, each time I made a change in any file, I had to stop the Node server with Ctrl+C, and then restart it back again.

Obviously there’s an easier way. The nodemon utility is a direct replace for node command, and watches all files to reload the Node server automatically. Huge time saver, and very well done.

I installed it as a global NPM package, so I can promptly use it anywhere.

Thursday, December 6, 2018

Wikipedia Templates, using React and TypeScript

I’ve been testing out React recently with great joy. The ability to grow a web application with components is really good, so much I was able to refactor an old application, a Wikipedia template generator, making it easier to mantain while increasing its complexity, becoming multi-language.

First I started writing ES6 JavaScript, but soon TypeScript caught my eye. My previous experience with TypeScript was a bit traumatic, since it involved the awful Angular 2, but after an initial struggling to make everything work, I can say that I can’t imagine a large scale project written without the aid of TypeScript.

I struggled with some things like HTML5 routing, which seems to be a pain to deploy, so I just used HashRouter. Also, the deployment to gh-pages branch is neatly made with gh-pages utility. Also, I used Redux in a very simple way; I’ve seen overengineered examples that put me off at first, but Redux itself is very simple, and I ended up choosing it instead of MobX. I used hooks from the upcoming React 16.7, and I believe it will completely change the way React components are written, it’s really different.

The Wikipedia Templates project is open source and it’s hosted on GitHub. The project isn’t ready yet, but the basics are done, and I plan to grow it as I have time.

Sunday, October 21, 2018

SRTEd 1.3.1, minor release

This week I released a new SRTEd version 1.3.1, with has minor, but many usability improvements. Also, it’s built with latest version of WinLamb, my very own personal raw Win32 library, which I use for everything.

I was planning a bigger release for SRTEd, with more advanced features, but since my time is pretty short these days, I just released a version where it is now, with the UI improvements. It’s already more than a year since the last version, time flies. One notable difference is the absence of a 32-bit executable, which was not included because it was firing false positives for malware, something completely absurd. To avoid the hassle, I opted to keep only the 64-bit version.

SRTEd can be downloaded from CNET.

Thursday, July 5, 2018

Vue.js builds for non-root web directories

The React’s lack of scoped CSS annoyance made me want to try Vue.js, which solves this problem right out of the box. And so far, I’m liking this framework quite a lot, I must admit. The idea of single file components pleases me greatly.

This morning I stomped over a problem: I was generating a build release to run under a non-root directory in my web server, and the application was getting lost by searching the files at the server root.

Fortunately I’m using vue-cli v3, actually 3.0.0-rc.3, which has quick solution, as I found here.

Sunday, March 11, 2018

Capitalization Rules for Song Titles

I found this guide back in 2007, provided by Standard MIDI Files on the Net, how defunct. I kept it on a TXT file on my hard disk for 11 years, and I rediscovered it today. And it’s still great, so I’m publishing the original here.

  1. The first and last words are always capitalized, and all except the words listed below are capitalized.
  2. These are lower-case, unless they are the first word or last word.
    • articles: a, an, the
    • conjunctions: and, but, or, nor
    • prepositions that are less than five letters long: at, by for, from, in, into, of, off, on, onto, out, over, to, up, with
    • as (only if it is followed by a noun)
  3. Prepositions are sometimes capitalized.
    • Prepositions are capitalized when they are the first or last word.
    • Prepositions that are part of two-word “phrasal verbs” (Come On, Hold On, etc.) are capitalized.
    • Prepositions that are over four letters long. (across, after, among, beyond, etc.).
  4. These short words are capitalized. Some people occasionally forget to capitalize these.
    • also, be, if, than, that, thus, when
    • as (if it is followed by a verb)

A List of Some “Phrasal Verbs”

These are some phrases in which the preposition needs to be capitalized.

Beat Up        Do Over         Go Over       Make Up       Take After
Blow Out       Fill In         Hand In       Pack Up       Take Back
Break Down     Fill Out        Hand Up       Pass Out      Take Off
Break Into     Get Along       Hold On       Pick Out      Take On
Break Up       Get Around      Keep On       Pick Up       Take Up
Bring Up       Get By          Keep Up       Put Away      Talk Back
Call Off       Get Over        Leave Out     Put Off       Talk Over
Call On        Get Through     Let Down      Put On        Throw Away
Call Up        Get Up          Look For      Put Out       Try On
Carry On       Give Back       Look Into     Put Up        Turn Down
Come Back      Give Up         Look Like     Roll Over     Turn In
Come Down      Go Along        Look Out      Run Into      Turn Off
Come On        Go Away         Look Over     Run Out       Turn On
Come Out       Go Away         Look Up       Run Over      Use Up
Come Over      Go On           Make Out      Show Up       Wait On

Friday, February 16, 2018

Alternative approach to bitflags in C++

Just wondering about a short, expressive and alternative way to implement bitflags in C++11.

Right now I don’t plan to adopt this idiom, but it doesn’t look so bad.

Wednesday, February 14, 2018

One grid to rule them all

I’ve just learned CSS Grid. It feels like an improvement over Flexbox, and although it’s more powerful, it’s actually a little simpler to wrap your head around. I liked Flexbox a lot, and I did many great things with it. I’m hoping to make even more stuff with Grid now. Newer browsers have been supporting it since last year, so if older browser compatibility is not an issue, it’s good to go.

I learned Grid in a couple minutes by watching this video, which is pretty good in teaching the concepts:

Friday, February 9, 2018

I hate the invasive Dropbox client

Very hard to completely disable the Dropbox client, which sneaks its updater into every corner of my new Windows 10 system. Here’s what I had to do to finally get rid of it:

  • On Dropbox client, Settings, uncheck start automatically;
  • Disable “DbxSvc” and two “Dropbox Update Service” in services.msc;
  • Disable startups at Task Manager > Startup tab;
  • Disable services in Control Panel > Task Scheduler > Task Scheduler Library.

I want Dropbox client to update only when I run Dropbox. This invasive behavior is completely unnecessary.