gophering on
Haiku (Pt. 2)
- - - - - - -

So I read up on the filesystem layout, got access to many 
more programs and libs, and learned a lot more shortcut 
keys. Here are some details from today:


I cloned the haikuports and haikuporter repos... but before 
I could do anything with them I noticed that there seemed 
to have been some form of package management update 
(_possibly_ enacted by one of my actions but possibly 
automatic) that added haikuports as a repository that 
delivers full packages.

That made things easier. I could now use either HaikuDepot 
(gui package manager) or pkgman (cli package manager) to 
install much more standard programs (for me at least). 
First thing was to get vim. It was a modern version (8.6) 
and came with both gvim and the cli (which is the one I 
use). I cloned my dotfiles onto this system and away we 
went... to full vanilla vim. The way the folder structure 
works on this system is sufficiently different that the vim 
port for Haiku was not looking for it in /boot/home/.vimrc 
(the equivalent of ~/.vimrc). Instead it goes with all 
other user settings: /boot/home/config/settings/vim/vimrc

Once I figured that out all was well and I now had a solid 
editor on the system. Up next I clearly needed to be able 
to access gopher and gemini content. I ran `pkgman install 
go` and got golang running on the system. The gopath 
variable was not set, so I needed to set it. I then cloned 
Bombadillo and tried `go build`. Nope. This is Go 
1.4.something. Most everything seems to work, but there are 
two major problems: the TLS lib for Go 1.4.x does not have 
some of the features I used for Gemini authentication... so 
i just commented out all Gemini module references in the 
main module. Problem one solved. Problem two is bigger: 
`strings.Builder` did not exist at the time of 1.4.x. I use 
it everywhere. I, in theory, could make all of those into 
straight string concatenation (which would get a lot 
slower), but have not decided if I want to go to the 
effort. I decided, for the time being, to abandon the idea. 
Maybe I'll code something new in Go 1.4 for Haiku. I cloned 
Stubb, a lua gopher client I wrote a while back. I ran 
`pkgman install lua luarocks`. This got Lua and Luarocks 
(Lua's package manager) on the system. I thought all was 
well, but when I tried to use Luarocks I was told that 
"" is not present. I then found a lua_dev package 
and got that. Problem solved? Even after that I was able to 
get my package to install, but Lua could not find it, or 
any of the packages installed by Luarocks. I tried a 
`--local` install and had no better luck. So I am zero for 
two with gopher clients. I did get Lynx running though, so 
that will do for now.

I noticed in the application menu there was a program 
called vision with an icon that looked sort of like a 
camera. I figured the other day that it was webcam stuff. 
It turned out to be a very usable IRC client. I connected 
to freenode #haiku for a bit. No one was talking though so 
I did not hang out too long. It was a pretty cool find 
though and I am sure I will use it more in the future.

_Web Browser(s)___

The web browser WebPositive is servicable but glitchy, 
particularly on CSS animation and JS heavy sites. Lynx and 
W3M are avialablae as ports. That _may_ be it. I didnt dig 
too much deeper. It isn't a high priority for me on this 
system. I thought about trying to build Surf... but I was 
doubtful that the needed libs would be available. Maybe 
I'll try later.


While testing out the web browser I went to youtube to play 
Roger Miller's Doo-Wacka-Doo (listen to it if you haven't 
heard it... a very enjoyable old novelty song). The sound 
just worked. No problem. Another big check mark for Haiku 
support for my Thinkpad. So far prety much everything has 
worked out of the box.


I'm not sure what the Haiku equivalent of these ideas are. 
The shutdown menu does not offer a sleep option, just 
restart or sut down. The shut down is extremely fast and 
the boot up is really fast as well (from the first splash 
screen paint to meaningful usage at least). If I leave the 
computer sitting idly the screen will eventually dim and 
then "turn off". A key press revives. Closing the laptop 
also turns the screen off. I am not sure what happens with 
power consumption in either state. There is still a bit of 
fan hum coming from the system during these times. I 
imagine there is still pretty sizable power draw, but with 
the screen off it is likely reduced from what it otherwise 
would be. I have had pretty decent battery life on it in 
any case.


As reported yesterday the WiFi worked right away and 
continues to do so. It remembers my networks fine and has 
only had a hiccup once or twice where it couldnt connect 
and I needed to tell it to try again.


I got this one a bit wrong yesterday. The number of rows 
and columns of workspaces is fully customizable. You do not 
have to run the workspaces application as a standalone 
application to have a visual note of wher eyou are at: that 
application can be run as a widget (termed a replicant in 
haiku-speak) in the system tray (which appears on all 
workspaces). I have my workspaces set up to be one row with 
four columns, which is more or less what I would use in 
Gnome or the like (my tiling setup would be a bit 
different). I can hot key between them with ease 
(Ctrl+Alt+Arrow-to-whichever-direction). It is also 
possible to move a window to a new workspace by adding 
`shift` to the aforementioned key combo.


The haiku terminal (Terminal, which is an xterm-256color) 
seems to be the only terminal available. I could not find a 
port of any other terminal. I tried to build ST, but there 
were some issues with fontconfig missing. I did not dig 
into it too far. I will likely return to this and see if I 
can get things working as I would very much prefer ST. This 
Terminal is a little glitchy, but still very usable.

The issues I mentioned in my last post about my cursor 
disappearing in my text editor Hermes still exist and also 
exist in Vim (though to a lesser degree). I also found out 
the proper place to install (or link) any local 
applications that I build: 


I had been looking at docs online, but it turns out the 
system actually comes with the user guide on the desktop 
and I just hadnt looked too closely. So it is good to know 
that if you install the system and dont have WiFi you wont 
be completely left in the lurch. I read the docs a lot 
today. They helped a lot with file layout (it is still a 
little odd to me and I am not used to it, but things are 
much clearer to me than they were), hot keys, 
configuration, etc. I'll talk more in depth about the file 
layout in a future post. It is an interesting design with 
pros and cons.


I liked working on the system a lot more once I got a few 
basic pieces of kit available to me. I also generated some 
keys and got set up to login to my favorite pubnixes (I am 
writing this over SSH from my Haiku system). The thing 
about Haiku is that it is NOT a unix system. It does not 
work or feel like unix/linux except in the shell. In the 
shell it is tantalizingly familiar: Bash, GNU Core Utils, 
familiar programs (once you get that ports repo working). 
This blend of familiar and foreign actually is working 
alright for me. As far as desktop systems go it is really 
quite fast and nice to work in once you get used to some of 
its peculiarities (a big one is that `alt` is used for 
things like copying and pasting... `alt+c` or `alt+v`, as 
well as most other hot key combos. Ctl is used in some hot 
key combos and is still the key you would use for sending 
signals like Ctl+c. This is actually kind of cool since it 
lets you still have copy easily avialable as `alt+c` and 
SIGINT as `Ctl+c`).

While it is not the system I intended to run and it does 
not exactly accomplish the goal I had for this Thinkpad... 
I am having fun with this system and think I may stick it 
out for awhile. For someone that just needs a fast and easy 
secondary desktop it works great. I can SSH elsewhere to do 
more heavy lifting coding tasks with newer libs if I need 
to. The connectivity is solid. 

The biggest current drawback to the system for me is the 
lack of a more recent Go version (1.10+ would be nice). I 
was able to get fully modern Python (3.8) and modern Lua. 
Both seems to work well, though there seem to be some 
package management quirks. I like building my own tools a 
lot so it seems like there are some gaps here that could be 
fun to fill... unfortunately the answer for filling them 
seems to be C++. We'll see. Their gui api has some really 
cool stuff available to scripting languages (like simple 
scripts to have really nice looking system native alert or 
file select boxes appear with next to no effort, even from 
bash scripts).

If anyone out there reading this is a Haiku user please 
reach out and share some of your tips, tricks, and 
experiences. Or if anyone is thinking about trying it out 
and has quesitons feel free to get in touch as well.   < 
sloum AT >

Until next time, try to avoid the plague that seems to be 
going around ;)