After starting the year with curses work, I decided to do some more!
Currently we lack Soft Label Key functions as specified by POSIX. What are these? Glad you asked! Soft Label Keys ripoff a line from the bottom of the screen and allow for up to 8 keys to be displayed there. You can define labels for them, colours, etc.
"BIG WHOOP!" I hear you say. "My app already does this, why should I care?"
Because SLK also works with the terminfo database to work out if the terminal natively supports labels (via plab_norm, label_on, etc)! This means a line doesn't have to be ripped off from the screen so no real-estate is lost. Sadly, no terminal actually seems to support these markings. But if one is ever made, it should work fine.
Now, not many curses apps actually use the SLK functions, probably for this very reason. But some do, and it is a standard so I've coded NetBSD to support this natively.
Sadly, this has uncovered a bug in the NetBSD curses library where cursor movement in a one line window at the bottom of the screen appears to push the window up. This is very visible with SLK and will have to be fixed for any apps that actually use it, but the SLK implementation itself is sound as resizing the terminal forces a redraw and it looks fine.
So over the holidays, I managed to get in some good quality family time and find some time to work on some Open Source stuff. I meant to work mainly on dhcpcd, but it turned out I spent most of my time working on NetBSD curses library so that Python Curses now works with it. Now, most people reading this blog may not care much for NetBSD or for curses, but it's important because ncurses is used pretty much everywhere by default ..... aside from NetBSD. And most readers should know, I go out of my way to promote interoperable software even when it's at a detriment to my own projects. That's just how I roll.
There is a apparently a thing called PD Curses but I don't know anywhere that actually uses it by default. If you know, please email me @ firstname.lastname@example.org or tweet me. I do know that the pkgsrc curses framework supports it.
And this is the thing I'm currently doing. As NetBSD curses supports more POSIX functions (and a few ncurses extensions, sadly) more and more packages now work alongside NetBSD curses, so I'm plowing through pkgsrc again moving things to the curses framework. This is important, because there is logic in devel/ncurses to use NetBSD curses when passing certain criteria, but sadly this always brings ncurses as a possibility to be linked or it's header used, both of which are quite bad for NetBSD curses so there is a method to my madness.
One interesting thing though is that since I started comitting my curses patches, it turns out that Sabotage Linux is using NetBSD curses and made it portable. I'm chatting with one of their devs and we're starting to merge of a few of their patches back into NetBSD.
My brother got me some very tasty presents for Christmas (and my up-coming Birthday), namely the GIGABYTE BRIX J1900 and a Samsung EVO 750 250G. Santa also brought me 8G of Crucial memory. Putting them all together is a nice new machine to install NetBSD Xen! The key part is this is a low end CPU, but critically supports Intel VT-x virtualization technology.
There were some challenges. Firstly, I couldn't find a way to get into the BIOS. Neither F12, F2 or Del hammering during the boot process worked. While there is a mouse cursor to move and click, it booted too fast to actually use it. Actually, pressing the BSS on screen button did briefly display a keyboard to enter the SSID, but it then booted instead. This meant I couldn't enable PXE boot, so a USB install is needed. This lead onto the next problem ..... NetBSD-7 is too old, you need a recent -current for the USB ports to work. No matter, making a NetBSD USB install was quite trivial, the only challenge being to find a pre-built image. Luckily I found http://daily-builds.netbsd.org/pub/NetBSD-daily/HEAD/ and browsed to the dates images folder to get the install img for amd64.
From this point, installation was trivial. But here are some notes:
- Allocating 5G to / is enough to install a -current base and compiler, pkgsrc checkout and build xentools.
- No idea if I need it, but I allocated 1G swap.
- I setup XEN backing using LVM, so the rest of the disk is allocated to that.
- I needed to reboot twice to get LVM/Xen to start recognising the assigned LV.
- The NetBSD Xen How To needs some love in places.
The speed of this box compared to my current Shuttle XS35 is impressive. While I have less disk space (quite a lot less), it should still be enough to replace it entirely and power my email, web and other stuff. As it's Xen, I am hoping that I can use this box to do my open source work on other OS's easily and support more OS's than my exiting laptop allowed (max 4 partitions) which means a faster turnaround time for support.
As I blogged previously about changing ISP, it has finally happened. The engineer who installed it was very friendly, polite and helpful whilst doing professional job. A credit to the company.
From 16/0.6mbs to 200/20mbs thanks to Virgin Media! OK, it's not quite 200 down, it's quite variable actually. So far, it's normally around 150mbs at peak times, compared to my old service which was rock steady. Probably because I was on low contention service so my max available was pretty much guaranteed. However, it's always 20+ up! And lets be fair, even 50mbs down is x3 better than what I had previosuly, but it's yet to dip under 120mbs. This will be awesome for work conference calls with video :)
Also, one unexpected feature of the Virgin Media SuperHub is the Modem mode (I turned off Router mode as my existing NetBSD router and Unifi wireless AP is better) is that it's not a PPP based modem. At least, not facing me. So I have to run dhcpcd on it to get my address, which makes me feel all warm and fuzzy as it's my personal software! A much easier setup than PPP as well as the MTU for routes can stay at 1500 and not be "adjusted" for PPPoE over PPPoA as is the norm in the UK.
Still, this is only day one, the service could go tits up, but so far the experice is very very nice :)
I'm FTTC connected and I get 14mbs down 0.2mbs up .... on a good day. When I took this service up 3 years ago it was sufficient .... but now it's now. So what's changed? Well, my site is getting more traffic (yay!) and I have more devices network connected. Also, my family is abusing the network more as well. I am also having been an Amazon Prime subscriber for a year now.
So BT can't improve it in 3 years. But I need something, so kaboosh, lets look elsewhere. Goscomb technical support while initially good is just simply shocking now they've been bought out by hSo group. They don't actually use their ticket tracker and when I phone up they say file a ticket. Explain patentiently I did ..... you get the idea. Coupled with the fact their IPv4 service has been exceptional, but their IPv6 service has been getting very spotty (and IPv6 was one of the sole reasons for using them) it's time to look elsewhere again. Also, I'm maxing my download cap and it's getting annoying and the next tier up is quite pricey....
So where to?
For better or for worse, I will be getting a Virgin Media Vivid Gamer 200 cable connection installed on Saturday. 200mbs down, 20mbs up, no traffic management. Wow! The up is better than my down ever was! Unlimited downloads sounds sexy too. The new deal is cheaper by £22 per month compared with the BT and Goscomb combo too boot. So what's the catch?
Well, I can't use the Virgin Media Business account. They can't get a static IP address working on their business modem in modem mode. At all. Also, there are reports of their static IP service being dog slow and when they change to dynamic the speed gets back up. Both of these are deal breaks for me .... I need it in modem mode as I run my own network. I'm moving to them for the speed, not the slowness and network dropouts. Apparently this is because the static IP is a GRE tunnel over the residential service.
So this means no more 100% self hosting .... I need a static IP address to send mail from. So my solution is to rent a VPS for £3 a month to act as my public nameserver and email gateway. This is now setup .... and in operation! It was fairly challenging, but the added bonus is that a lot more spam doesn't hit my homenetwork as it's blocked by spamhaus and postgrey. Even if it gets past that, it still has to defeat spamassassin on my mail mailserver, which is still hosted at home. It also means no more IPv6 .... but I will investigate a Hurricane Electric IPv6 Tunnel. I've used them before and it as good but slow ... hopefully it will be useable on the new cable! Virgin Media [claim to be rolling out IPv6 mid 2017]() but I'm not counting on that (but it would be nice).
Anyway, I think I've got everything ready to be upgraded now and I'm quite exited!