In order to debug nanomsg problems on Windows, I recently installed a copy of Windows 8.1 in a VMWare guest VM, along with Visual Studio 14 and CMake 3.5.2. (Yes, I've entered a special plane of Hell, reserved for just for people who try to maintain cross-platform open source software. I think this one might be the tenth plane, that Dante skipped because it was just too damned horrible.)
Every time I tried to build, I got bizarre errors from the CMake / build process ... like this:
Those who know me know that I have little love for Microsoft Windows. The platform is a special snowflake, and coming from a Unix background (real UNIX, not Linux, btw), every time I'm faced with Windows I feel like I'm in some alternate dimension where everything is a little strange and painful.
Yesterday there was a flurry of activity on Twitter, and in retrospect, it seems that some have come away with interpretations of what I said that are other than what I intended. Some of that misunderstanding is pretty unfortunate, so I'd like to set the record straight on a couple of items now.
Some of you who follow me may know that I have recently built a pretty nifty framework for working with terminals. ANSI, ASCII, VT100, Windows Console, etc. Its called Tcell, and located on github. (Its a Go framework though.) It offers many of the same features as curses, though it is most definitely not a clone of curses.
Anyway, I decided it should be possible to write a game in this framework, so I wrote one.
I've been noticing more and more lately that we have a plethora of libraries and programs written for Go, which don't work on one platform or another. The root cause of these is often the use of direct system call coding to system calls such as ioctl(). On some platforms (illumos/solaris!) there is no such system call.
I'm happy to announce that I feel I've wrapped up Govisor to a point where its ready for public consumption.
Govisor is a service similar to supervisord, in that it can be used to manage a bunch of processes. However, it is much richer in that it understands process dependencies, conflicts, and also offers capabilities for self-healing, and consolidated log management.
As a PSA (public service announcement), I'm reporting here that updating your Yosemite system to 10.10.3 is incredibly toxic if you use WiFi.
I've seen other reports of this, and I've experienced it myself. What happened is that the update for 10.10.3 seems to have done something tragically bad to the WiFi drivers, such that it completely hammers the network to the point of making it unusable for everyone else on the network.
I recently decided to have a look back at some old stuff I wrote. Blast from the past stuff. One of the things I decided to look at was the very first open source program I wrote -- something called vtprint.
As part of a work-related project, I'm writing code that needs to resolve DNS names using Go, on illumos.
While doing this work, I noticed a very surprising thing. When a host has both IPv6 and IPv4 addresses associated with a name (such as localhost), Go prefers to resolve to the IPv4 version of the name, unless one has asked specifically for v6 names.
As a result of work I've been doing for illumos, I've recently gotten re-engaged with internationalization, and the support for this in libc and localedef (I am the original author for our localedef.)
I've decided that human languages suck. Some suck worse than others though, so I thought I'd write up a guide. You can take this as "your language sucks if...", or perhaps a better view might be "your program sucks if you make assumptions this breaks..."
I'm going to say some things here that may be controversial. Certainly that headline is. But please, bear with me, and read this before you judge too harshly.
As another writer said, 2014 has been a terrible year for women in tech. (Whether in the industry, or in gaming.) Arguably, this is not a new thing, but rather events are reaching a head. Women (some at any rate) are being more vocal, and awareness of women's issues is up. On the face of it, this should be a good thing.
A year in the making... and finally the code is pushed. Hooray!
I've just pushed 2964 into illumos, which adds support for a bunch of new libc calls for thread safe and thread-specific locales, as well as explicit locale_t objects. Some of the interfaces added fall under the BSD/MacOS X "xlocale" class of functions.
Recently, there has been a bit of a debate on the illumos mailing lists, beginning I suppose with an initial proposal I made concerning the output from the uname(1) command on illumos, which today, when presented with "-s -r" as options, emits "SunOS 5.11".
nanomsg is trademarked by the inventor of the protocols. (He does seem to take a fairly loose stance with enforcement though -- since he advocates using names that are derived from nanomsg, as long as its clear that there is only one "nanomsg".)
I'm pleased to announce that this past weekend I released the first version of my implementation of the SP (scalability protocols, sometimes known by their reference implementation, nanomsg) implemented in pure Go. This allows them to be used even on platforms where cgo is not present. It may be possible to use them in playground (I've not tried yet!)
Some of you may have noticed that my email, or my blog, or website, was down.
I discontinued my hosting service with BlueHost, and when I did, I mistakenly thought that by keeping my domain registration with them, that I'd still have DNS services. It was both a foolish mistake, and yet an easy one to make. (I should have known better...)
Anyway, things are back to normal now, once the interweb's negative caches have timed out...
So I've not blogged in a while, but my recent experience with a major mobile provider was so astonishingly bad that I feel compelled to write about my experiences. (Executive summary: never do business with T-mobile again!)
I had some friends out from Russia back in November, and they wanted to purchase an iPhone 5s for their son as a birthday gift. Sadly, we couldn't get unlocked ones from the Apple Store at the time, because they simply lacked inventory.
I want to give folks a status update on the illumos corporate entity.
In a nutshell, the corporate entity seems to be failing to have traction. In particular, the various corporate contributors and downstreams for illumos have declined to step up to ensure that an illumos corporate entity has sufficient backing to make it successful.
We have an... ahem... toxic personality in our midst in illumos. I'm going to respond here to his most recent post, to avoid wasting the time on the illumos developers mailing list. If you don't care about non-sense like this (although it may have entertainment value), please just ignore this post and move on.
During the first days of October 2012, we had an illumos day, and a one day illumos hackathon that was very well attended by some of the best and brightest in our community (and I daresay, in any open source community.)
The purpose of the hackathon, besides just doing some cool projects, is to give folks a chance to interact with other domain experts, and code, particularly in areas outside their particular area of expertise.
A couple of months ago I purchased the rather expensive pair of Apple in-ear earphones, to replace an older pair of standard earbuds I'd given to someone else. They never fit my ear correctly, and I hated them.
Recently I've also taken up getting more physically fit -- so going to the gym more often, including spending a lot of time running on the treadmill.
But my earphones kept falling out. And my iPhone 4 is kind of heavy and inconvenient.
My company, DEY Storage Systems, is in the process of creating a new product around the illumos operating system. As you might imagine, this product includes a variety of open and proprietary source code. The product itself is not delivered as a separate executable, but as a complete product.
I was forwarded the following infographic from OnlineCollege.org. While I'm not normally one to just regurgitate someone else's posting (especially advertising), I think this one is worth looking at -- especially if you're at a point where you're contemplating future career or learning plans.
With the recent announcement and discussion around OpenIndiana, I think its time to bring to the light of day an idea I've been toying with for a while now -- and have discussed with a few others in the community.
illumos needs a reference distribution.
Now just hold on there... before you get all wound up, let's discuss what I mean by a reference distribution.
So, if you're like me, and you've been shopping for a new system lately because you're last one is dying or dead, you might see some fancy looking Intel E3-1200v2 Xeon systems. (Why Xeon? Because ECC memory is a good thing. I attribute some of my difficulty with my last system to using non-ECC memory. Because its not ECC, I don't really know whether the problem was in RAM or CPU, but I digress...)
Great, so you pick out a E3-1240v2 Ivy Bridge CPU, and then you look for a System Board.
So, I've been trying to setup a system that can build illumos-gate. Because my old system had a memory DIMM fault, and isn't usable anymore.
I thought, hmm... let me try something other than OpenIndiana.
Only OpenIndiana seems able to build vanilla illumos-gate right now.
Why? Because of external dependencies! I tried building on OmniOS. The stopper there -- Python 2.4! On SmartOS, the dependency is IPS itself. It seems only OpenIndiana is suitable for building stock illumos-gate.
Yesterday we had our first ever illumos hack-a-thon. About a dozen people from the community showed up, and worked on some very very cool things. At the end of the day, about a half-dozen different demos were done, to show what was worked on.
Constantin Gonzalez recently interviewed me for his "HELDENFfunk" podcast series, while I was in Amsterdam for our European User's Conference. Also interviewed were OpenIndiana founders Alasdair Lumsden and Andrzej Szeszo.