Left handed mouse

I’ve been using mouse left handed for a long while after (kind of) breaking my right hand thanks to playing a bit too much rhythm game and too lazy to visit doctor (and that it doesn’t hurt that much).

I initially switched the button using Windows’ built-in mouse button setting but learned that it breaks in various ways ranging from application not honoring the setting to just plain annoyance to having to set the thing at all.

Later I found this hardware-stored profile for certain mice and I’ve been happily using mouse left handed ever since.

There are quite a few things I noticed from switching side.

One main thing I first noticed is how much keyboard shortcuts are located on left side. From the most basic copy/paste, browser tab open/close, closing app, switching app, switching tab, escape key, and some keyboards don’t even have windows key on right side. Those are cause a slight annoyance when using mouse left handed because that means I need to switch position more often than needed. Either that or I just right click and do copy/paste stuff and set my mouse’s 5 additional buttons to do those tasks. I like my mouse.

The other thing is keyboard and mouse positioning is actually more balanced when using keyboard with numpad. The main keys on keyboard are pretty much located on the middle with numpad on right side and mouse on left side. Very convenient.

Oh and I have profile for both sides on my mouse so it’s just clicks away to switch its handedness.

I haven’t used right handed mouse for so long I find it weird now. And my accuracy have dropped as well. Combined with my left hand not being that accurate yet, I probably have overall even less accuracy on my mouse control now.

VirtualBox again

Due to reasons I swapped my web server (was in VM) and VM box role. Or more like web server is now bare metal and functions as VM box. It’s downgraded from real virtualization (Hyper-V) to VirtualBox though.

That said, FreeBSD doesn’t seem to be quite fully functional on Hyper-V thanks to performance hit and slow disk detection on boot causing failure.

Yeah, I’ve had enough of it so I decided to swap the role and run the web server directly on the server instead.

On the bright side, I can use zfs for everything and no more stupid SSD setup (it was unbalanced 500 and 250 GB disks).

VirtualBox seems to be flaky as always though apparently once it’s setup correctly it runs without much trouble. Also thankfully VirtualBox on FreeBSD has complete scripts for running it headless and autostart on boot.

This was also my main setup for quite a long time years ago and I sure hope it’s at least as stable as it was back then! That said, the initial setup seems to be flakier. Oh well.

Memo and stuff.

Ruby 2.3 on FreeBSD 11

Compiling Ruby on FreeBSD is not quite simple.

  • make sure to tell it to also find libraries in /usr/local
  • and tell configure script to find OpenSSL in /usr because the later version isn’t quite compatible with latest ruby yet

So here’s the configure line

CFLAGS=-I/usr/local/include \
CPPFLAGS=-I/usr/local/include \
LDFLAGS=-L/usr/local/lib \
./configure --prefix="/opt/ruby23" --disable-install-doc --with-openssl-dir=/usr \
&& make \
&& make install

Miura Fold

This is mostly for my own reminder.

  1. Google “miura fold”
  2. Read some articles, watch some videos
  3. Remember this:
    1. Long/initial fold must be odd-numbered.
    2. Short/following fold must have approximately same degree.
    3. Open up, fold following the short, zigzagged lines.
    4. ???
    5. Profit?

Not sure if useful.

PHP 7!

Panzer vor! (☞゚∀゚)☞

Panzer vor! (☞゚∀゚)☞

# (build machine since the server itself doesn't have enough memory to build PHP)
root@openbsd:/var# /opt/php7/bin/php --version
PHP 7.0.0 (cli) (built: Dec  4 2015 21:50:31) ( NTS )
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies
root@openbsd:/var# uname -a
OpenBSD openbsd.myconan.net 5.8 GENERIC#1170 amd64

Oh look, this blog is now running on PHP 7 (under OpenBSD). Apart of OpenBSD-specific mysql socket path, everything seems to be working fine out of box. It seems to be slightly faster as well? Or maybe not, I guess WordPress is just so slow and no amount of speed ups can fix it.

Hopefully OpenBSD 5.9 will have it by default. Still no ports in sight though.

Configure parameters:

./configure --prefix=/opt/php7 --enable-fpm --with-openssl --with-pcre-regex --with-zlib --enable-bcmath --enable-calendar --with-curl --enable-exif --enable-ftp --with-gd --with-gettext --with-gmp --with-mhash --enable-intl --enable-mbstring --with-mysqli --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-wddx --enable-mysqlnd --with-webp-dir=/usr/local --with-jpeg-dir=/usr/local --with-freetype-dir=/usr/X11R6 --with-png-dir=/usr/local

Rails and Bootstrap

This hit me when I was rewriting front-end part of Zeropaste. Of course later I found out that there’s gem for it.

But anyway, if you don’t want to add another gem and feel like writing crapload of divs, it’s not that difficult. It breaks Rails standard form error handling though.

First, change the default error field handling to do nothing instead of wrapping it in a div:

config.action_view.field_error_proc = proc { |html| html }

(put in application.rb)

And then create this helper:

def error_class(object, attribute)
  "has-error" if object.errors.include? attribute
end

Finally, here’s how to use it (for attribute key of a model):

<div class="form-group <%= error_class f.object, :key %>">
  <%= f.label :key %>
  <%= f.text_field :key, :class => "form-control" %>
</div>

…and done.

Compiling xpdf (pdfimages) for Windows

…on a FreeBSD system. I recently needed a modified version of it for a good reason. Only tried for its pdfimages. Probably works for other components as well.

  1. Install these packages:
    • mingw32-bin-msvcrt
    • mingw32-binutils
    • mingw32-gcc
  2. Download, extract, go to xpdf source.
  3. ./configure --host=mingw32 --target=i686-mingw32msvc --build=i686-linux
  4. make pdfimages
  5. ???
  6. Profit!

Whoops, almost forgot one last step. Produced binary from steps above will require additional libraries to start. To make it run with just the binary, rerun the last compile command (from output of make) with additional arguments: -static-libgcc and -static-libstdc++.

[ Reference for configure script arguments | Reference for static build ]

Network performance checklist: TSO/LSO

Took me good few hours to find out why specific combination of task performs incredibly slowly on my server.

For reference, in my case it’s port-forwarded ssh/https connection over openvpn.

[ Client ] --(Internet)--> [ Gateway ] --(OpenVPN)--> [ Server (SSH) ]

Doing anything which takes up bandwidth (displaying log files, etc) will shoot the cpu load (at interrupt) up by a lot. By a lot I mean over 50% of one core.

This guy have the reasoning why it’s happening but I don’t know how much of it is correct. VMware support page also suggesting disabling it if network performance is slow.

In FreeBSD it’s:

echo 'net.inet.tcp.tso=0' >> /etc/sysctl.conf

In Windows it’s this .reg file:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"DisableTaskOffload"=dword:00000001

It seems to involve a shell script in Linux so I won’t bother writing it off here since it differs by system.

As usual, YMMV.

…and there goes my time 🙁