Monday, March 22, 2021

Review: Middlesex by Jeffery Eugenides

MiddlesexMiddlesex by Jeffrey Eugenides
My rating: 5 of 5 stars

This is an interesting book, it is actually two stories that blend together to make one long fascinating multi generational family drama. From the incestuous grandparents, through the post WWII parents building a mid 20th century nuclear family, to Cal, born as an intersex (hermaphrodite) and raised as girl, this story is captivating on many levels. The central character is supposed to Cal, but he really is not, he is just one character among a cast of equally interesting characters.

The story starts with Desdemona and Lefty, a brother and sister couple escaping post WWI Turkey, to remake themselves as a married couple in America. The Desdemona and Lefty relationship is an uncomfortable one, the author tried to build an epic love story here, but there is a definite ick factor here. Their story is not really about the oddity of the relationship or really even the relationship itself, but rather it is about transformations and making a new life for ones self.

This transformation and building of a new life, parallels Cal's own story, upon the discovery of Cal's condition, she runs away and starts a new life as a man. There is even a bit of an ick factor, while Cal is a teenage runway he becomes a performer in burlesque show where his genitals are displayed for the entertainment of paying customers. Interspersed throughout the book is the story of a middle aged Cal meeting a woman who excepts him for who he is, this part of the story is very short and told in single paragraphs throughout the book.

In between Cal and his grandparents is the story of Milton and Tessie, Cal's parents, who are also cousins. Their story is not so much about transformation, but more about what life was like for ethnic immigrants and their children in the mid 20th century as they build a life together and have children. Their lives fall apart a couple of times, but always they seem to bounce back, stronger than before.

Over all, really good book, strong characters, interesting story lines built with strong writing. I liked the way the author faded from one story to another, with little to no transition. In one paragraph you will be reading about Lefty's gambling problem in the 1960's and in the next reading about Cal spending time with a women in the early 2000's. The transitions are smooth and a couple of times I did not even realize they had happened, it just felt like the natural flow of the story.

View all my reviews

Thursday, March 11, 2021

I do stupid things sometimes

 I have been using Linux for decades. At this point I have it down pretty well, even to the point where it is easier than Windows 10 for me. Sometimes I get bored with the "It just works" shit I take on a task just because it is hard. If you have been reading this blog for any length of time, you have seen me switch Linux distributions, and even try out FreeBSD.

This wee, my project has been trying out tiling windows managers. Normally I just use Mate, which is pretty straight forward and not too different from using Windows, although it is far more configurable. A tiling window manager, to quote Wikipedia, is 

"a tiling window manager is a window manager with an organization of the screen into mutually non-overlapping frames, as opposed to the more popular approach of coordinate-based stacking of overlapping objects (windows) that tries to fully emulate the desktop metaphor."

Something like this:


In other words, instead of windows floating all over the place, the windows are nicely lined up, wasting no desktop space. The really nice feature of most of these tiling windows managers is they are light on resources. When using Mate, it is not unusual for 5GB of RAM to be in use at any given times. While using one of these, I have never seen RAM usage climb above 1 GB. Of course there is a trade off in functionality and ease of use. Of course this was not about functionality or ease of use, this was about abusing myself. I tried two of them out, DWM and 13, compared to Mate, neither were great, but one was definitely better than the other.

DWM is made by the Suckless organization, I have some really bad news for them however. DWM does not suck less. I get it, these guys want to build light weight tools, with a minimum of features. Okay, got it, but seriously, it should not be necessary to recompile from source code to change the colors of the tool bar. In fact any changes at that you might want to make, require you to change the source code and recompile. Apparently, to them, this is a feature, not a bug. In my mind, reading and writing a configuration file would not be a terrible leap in bloat. To their credit, they do provide patches for the more popular modifications people make, unfortunately, it is exactly no ones job to maintain these patches, and I found 80% of them I could not even apply the patch without jumping through hoops and when I did get the patches installed properly, many of them  failed to function properly. So after fucking with this for 2 days and getting little more than a basic install working, I decided this was a non starter.

i3 is slightly better in terms of configuration. They at least understand the utility of a configuration file to make small useful changes. Mind you it took me the better part of a day googling things to finally get a usable desktop so it was not all fun and sunshine, however once I figured out the basic syntax of the config files, it was relatively easy to add functionality. I would not consider i3 to be easy by any means, but it sucks less than DWM. The thing i3 really had over DWM, is once I got everything setup more or less the way I wanted it, it was pretty easy to save the config files and write a script to automate installing all the needed software and placing the config files where they needed to be, so duplicating my setup on another system would be trivial.

Overall, I am a bit meh! about this whole tiling windows manager thing. I like the idea of this kind of organizational structure and desktop management, but honestly there is no reason why it should take 7 hours setting up a decent working desktop with my preferred colors, properly sized and readable fonts that do not make my eyes bleed, and some useful applets like WiFi, Battery and volume control. Now that it is done, I will probably use it for a while, but if I ever decide to seriously change windows managers, I will choose one that has a setup wizard, not one that requires me to know that #012FFF is the hexadecimal value of my favorite shade of blue.

Thursday, March 4, 2021

RE: Raspberry Pi 400

 One of the things I thought I'd talk about with this machine is configuring it to do something useful. On the outside this appears to be pretty easy, the basic Rasbian boot image pretty much has everything you need to be reasonably productive. The problem is, I don't particularly like the basic setup or the choices of applications. On top of that, I prefer Ubuntu to other flavors of Linux, so I wanted to start there. The basic Ubuntu desktop never appealed to me, Gnome 3 is just not my thing and on my desktop, I use Mates. There is a Mates version I can use, but I wanted to do something a little different. The Raspberry Pi 400 is a pretty decent machine and is very capable of running Mates, but it is still somewhat constrained my modern standards and i have no desire to overclock it, so the less resources the windowing system uses, the more resources I have available for applications and multitasking.

My choice for Window Manager is Dynamic Window Manager (DWM), it is the core of the Suckless Desktop, whose design goal is simplicity in desktop design. The whole thing runs on less than than 300K of memory. It does have some limitations and irritations, but the trade offs are acceptable. DWM is very configurable, but this requires you to recompile it to even change the default color scheme and upgrading it, forces you to make all the changes again before doing so. This is a no thanks for me, the default colors are fine, all I really want to do is change the background and that is easy enough without recompiling anything. So I will simply be using apt-get to install and update it.

I will start off with the Ubuntu 20.04 Server image, I choose this because it does not have xorg or graphical applications preinstalled, it is totally command line and is a blank slate for our purposes. I am a lets script this shit kind of guy, so that is what i did, I created some basic config files to get me started and write a shell script to install the software I regularly use, so once I get Ubuntu Server installed, updated and a new user created, I simply copied all of these files, plus the image I wanted to use as my background, over to my home directory via ssh and ran the setup script.

Some notes about what I did here. I removed snap because i have found snap applications run significantly slower than the normal repository versions, so I remove it to keep from accidentally installing from the snap store. I removed gdm3, because I want the system to boot into text mode by default, I will start DWM manually when I need it. You will note that I have two fairly complete sets of applications, text mode and GUI, I would say I am in the GUI 80% of the time, but I do have a bit of a fetish for the command line and sometimes I will spend a lot of time working in text mode only, and this gives me both for when I am in one of those moods. To answer the obvious question, yes I can be fairly productive at the command line, about the only things I can't do is play videos and the internet experience is less than optimal.

Well that is it folks, I have posted all the files below, so you can use them as a template for yourself so you can customize your setup without too much fuss.

Setup script:

#!/bin/sh

# Update the system
sudo apt-get update

# Install text mode applications, tools and libraries
sudo apt-get install mc links cmus htop neofetch wordgrinder emacs-nox tmux alpine sc finch tpp net-tools i2c-tools build-essential -y

# Install GUI and applications, tools and libraries
sudo apt-get install xorg dwm suckless-tools dmenu feh rxvt-unicode firefox thunderbird gnumeric abiword pidgin pluma audacious vlc -y

# Clean up
sudo apt autoremove --purge snapd -y
sudo apt purge gdm3 -y
sudo apt-get autoremove -y
sudo apt-get clean

# Copy config files and fix some things
cp x.tmux.conf ~/.tmux.conf
cp x.xsession ~/.xsession
cp x.Xdefaults ~/.Xdefaults
mkdir ~/pictures
cp background.jpg ~/pictures
sudo cat wifi.txt >> /etc/netplan/50-cloud-init.yaml

 .tmux.conf file

# loud or quiet?
set -g visual-activity off
set -g visual-bell off
set -g visual-silence off
setw -g monitor-activity off
set -g bell-action none

#  modes
setw -g clock-mode-colour colour5
setw -g mode-style 'fg=colour1 bg=colour18 bold'

# panes
set -g pane-border-style 'fg=green bg=white'
set -g pane-active-border-style 'bg=green fg=white'

# statusbar
set -g status-position top
set -g status-justify left
set -g status-style 'bg=green fg=white'
set -g status-left ''
set -g status-right '#[fg=white,bg=black] %d/%m #[fg=white,bg=black] %H:%M:%S '
set -g status-right-length 50
set -g status-left-length 20

setw -g window-status-current-style 'fg=white bg=black bold'
setw -g window-status-current-format ' #I#[fg=white]:#[fg=white]#W#[fg=white]#F '

setw -g window-status-style 'fg=white bg=green'
setw -g window-status-format ' #I#[fg=white]:#[fg=white]#W#[fg=white]#F '

setw -g window-status-bell-style 'fg=white bg=green bold'

# messages
set -g message-style 'fg=white bg=green bold'

 .xsession file

# set background image
feh --bg-scale ~/pictures/background.jpg

# puts a clock in the upper right hand corner
(while true; do xsetroot -name "` date +"%I:%M %p %D"`"; sleep 5; done ) &

# starts DWM
exec dwm

 .Xdefaults file

URxvt*termName: rxvt
URxvt.buffered:         true
URxvt.background:       black
URxvt.foreground:       green
URxvt.cursorColor:      green
URxvt.underlineColor:   red
URxvt.scrollBar:    False
URxvt.perl-ext:         default,matcher
URxvt.urlLauncher:      /usr/bin/firefox
URxvt.matcher.button:   1
URxvt.transparent:    True
URxvt.shading:        50

 wifi.txt file to setup wireless

    wifis:
        wlan0:
            optional: true
            access-points:
                "Access Point SSID":
                    password: "Password"
            dhcp4: true

Tuesday, March 2, 2021

Raspberry Pi 400

Recently I bought a Raspberry Pi 400. This is a neat little device, basically it is a Raspberry Pi 4 (RPi) built into a nice slim white keyboard. Like the RPi, it has GPIO headers for attaching interesting devices like sensors, servos or small LCD panels. It is powered off a USB-C connector, it has 2 Mini HDMI ports so you can run 2 monitors on it and has USB3 ports. The most important thing about it is the 4 core ARM processor that runs at 1.8Ghz and it has 4 GB of memory, which mean it is fast enough to function as a proper desktop computer.

Now, would I use this as my main computer? Probably not, but as a backup machine, why not. If I were buying a computer for a kid, this would definitely top my list, coming in at $70 for just the system itself. A more complete kit with power supply, Mini HDMI cable, mouse and an SD card preinstalled with an OS is about $100. It does all the basic things a computer needs to do, surf the web, check email, basic document creation, plays MP3's and videos with very little trouble.

There are a couple of downsides as you would expect. For one the keyboard is a bit cramped, I typed this post on it, and I found it to be just a little uncomfortable. It boots of an SD card, which are notoriously slow for disk access, so if you are reading and writing large files, the system will pause for a bit. i found attaching a USB3 Hard rive to it fixes that problem pretty well. Finally, this is not a problem for me, but many other people will, it does not officially run Windows. Some clever hackers have gotten Windows installed on it, but there are missing drivers, and will be missing features like WiFi and Bluetooth support. For me this was not a big deal, I am a Linux guy, so this did not bother me even a little.

Overall, not bad, the RPi 4 was certainly the best Raspberry Pi to hit the market and this does it one better by making it an integrated easy to use computer.