Free and Open Source Software – the next surge

Free and Open Source Software (FOSS) won its battle for mainstream acceptance many years ago. Now it’s everywhere. It’s running the Internet and providing the foundation for software giants like Amazon, Google, Facebook, Twitter and Apple. People are using FOSS like never before with Wikipedia being the biggest knowledge base in human history, Linux enjoying 83% market share on smartphones and 98.8% of the World’s supercomputers, Ubuntu users counting one billion, large corporations opting for FOSS, etc.

The next surge will come from security. There will be a backlash from politicians’ craving for a more controlled society. There is a continual push for invading the privacy of ordinary citizens by hollowing the security of software. The UK, China and the US are leading the assault on privacy by trying to make it mandatory for vendors to build backdoors into their encrypted software. This would mean that anyone using Unfree and Closed Source Software will be running software that is insecure by design. Enough awareness about this security threat will push companies in the direction of FOSS. And the ordinary citizen will follow.

Because – with FOSS, there is no vendor to strong-arm and bully into submission, and any backdoor will be open for all to see.

backdoor

Killing ads on Facebook

Simply add this to a custom CSS style sheet in your browser:

.ego_section,.mvs._5j5u._5jqk.clearfix,._54b-,div[data-referrer*="substream"] div[data-ownerid*="u_ps"],div[class="_4-u2 mbm _5jmm _5pat _5v3q _5sq8 _5x16"][data-xt-vimp*="log_initial_nonviewable"],._54b{display:none!important}

Any decent browser (like the one I use, “qutebrowser“), will have the option of using a custom CSS style sheet when rendering pages. The above code only affects Facebook and makes ads not show up.

You may of course use another ad-block system, but this is the leanest, less resource intensive and most elegant I have seen. Thanks to a3cAnton.

Conky revisited

It’s pefecting. And perfecting. And so it’s time to revisit my conky setup. From the conky github page, we read:

Conky is a free, light-weight system monitor for X, that displays any kind of information on your desktop.

It can display anything on your Linux (or *BSD) desktop; Your calendar(s), the weather, system information, text or fancy graphics. It can also be a simple, slim and non-intrusive line of information at the top of your desktop. Like on my system:

conky-screenshot

Conky is the text line on the top, starting with the time (22:32). The rest is my weechat communications hub (which is my first desktop out of the 5 desktops I normally have). The window manager is i3.

conky0

To get this conky line, you can use my conkyrc config file. Let’s go through it step-by-step:

conky1
The first part is the time and date and the week number in parenthesis (with the day number in the week – starting with monday – as the number after the period). The code goes like this:

${time %H:%M  %Y-%m-%d (%V.%u)}

Show time and date, week number and day number in the week

conky2

${execi 1800 /home/geir/bin/weather1no.rb} ${execi 1800 gcal -c | awk '/Moon/, /$/' | sed -e 's/^.*: //'}

Show the Moon phase (config in .gcalrc), “-” indicates a waning moon while “+” indicates a vexing moon.

conky3

C: ${if_match ${cpu cpu0}80}"\#ff0000"${else}"\#aaaaaa"${endif} }

Show CPU load (pad to two digits), system load and CPU temperature (color red if above 80 deg celsius)

conky4

M: ${if_match ${memperc}<10} ${endif}${memperc}% ${swapperc}%  D: ${fs_free_perc /}%

Memory usage (padded to two digits), Swap usage, Disk usage

conky5

IP: ${if_up wlan0}${addr wlan0} (${wireless_essid wlan0}${if_match ${wireless_link_qual_perc wlan0}<100} ${endif}${wireless_link_qual_perc wlan0}%) /dev/null; then echo "O"; else echo "X"; fi;}>

Show IP address, wifi essid and strength (if wifi). Print “” if the address can be reached (www.vg.no), and “” if not

conky6

${if_existing .mail.lock}.${else} ${endif}${exec echo `cat /home/geir/.mail2 | grep G`}  ${exec echo `cat /home/geir/.mail2 | grep A`}${if_existing .nomail} [NoMail]${endif}${if_existing .nonet} [NN]${endif}${if_existing .mail.fail} [NL]${endif}

Show a dot if the script mail_fetch.rb is running, a space if not. Content of local imap Maildir boxes that are watched by mail_fetch. Show ” [NoMail] ” if the NoMail directive is set via mail_fetch. Show ” [NN] ” if mail_fetch cannot get Net access. Show ” [NL] ” if mail_fetch fails to login to local or remote server.

conky7

V: ${texeci 3 /home/geir/bin/conky_vol.sh}${texeci 3 /home/geir/bin/conky_volM.sh}
L: ${texeci 10 xbacklight -get | awk '{print int($1)}'}
${battery_short BAT1}${if_match ${battery_percent BAT1}<6}  ${blink XXXXX} ${endif}${if_match ${battery_percent BAT1}<4}${execi 60 i3lock -c 000000 && sudo pm-suspend}${endif} " , "color" : ${if_match ${battery_percent BAT1}<5}"\#ff0000"${else}"\#dddddd"${endif} }

Show volume level (and “[Off] (from aumixer) if volume is off). Show LCD brightness level. Battery percentage and three spaces to pad the output from the right edge. Write out “XXXXX” if battery is below 6%. Suspend if battery is below 4%. The far right is reserved for the system tray (you see nm-applet residing there with the wifi link quality showing as an icon). Dropbox and other icons pop up there as needed.

I also have a more detailed system information conky on my desktop as well as my calendar for the next two weeks. Mora about those in a future post (maybe).

weechat as a communications hub

I have been using irssi as my Internet Relay Chat (IRC) client for more than a decade. It has served me well. But then I was prompted by a couple of weechat users over at the #ranger channel to try weechat.

weechat

I love technical improvements, but my setup is becoming increasingly hard to improve upon. Any suggestions that tickle my nerdy fancy is highly welcome. And so I embarked upon setting up weechat on one of my DigitalOcean servers and use ssh to connect to my new chat client. This setup allows me to always remain on the chat channels even when my laptop is hibernated. I simply reconnect via ssh to weechat running in screen on my server. An added benefit is that I can also stay on with my Android phone via the excellent “Weechat Android” app. How cool is that?

The configuration is nicely interactive and with a set of useful scripts, I have a powerful setup:

  • iset.pl – Set WeeChat and plugins options interactively (a must-have)
  • buffers.pl – Sidebar with list of buffers (another must-have)
  • shortenurl.py – Shorten long urls using isgd or tinyurl (important)
  • nickregain.pl – Automatically attempts to regain IRC primary nick
  • colorize_nicks.py – Weechat nick colors in the chat area and command line
  • go.py – Quick jump to buffers
  • buffer_autoclose.py – Automatically close inactive private message buffers
  • histsearch.py – Quick search in command history
  • auto_away.py – A simple auto-away script

And then I got Bitlbee set up on the server. Bitlbee is a chat hub for various protocols that weechat can connect to. Bitlbee can hook onto your Facebook chat and your Twitter feed. I got both Facebook chat and Twitter up and running and now I can tweet directly in weechat and have chats and even group chats with Facebook friends in my weechat – both on my laptop and on my mobile. Weechat has become a nice communications hub:

My weechat screen

My weechat screen

Xtreme

It really is extreme. Extreme people with extreme skills, doing stuff people wouldn’t think possible.” Adrian was half proud, half nervous as he walked through the doors of the most mythical company in town – aptly called Xtreme. Unpretentious, an almost anonymous location. But inside, a nerd’s heaven.

Xtreme

The interview was nothing like he had imagined. And very far from any interview he had experienced before. He was to pitch right in on a project for a week. And then his team mates were to decide if they wanted to let him on board. He had to impress them, ha had to be extreme. “Impress people like Claes, Florian, Maria and Michael. Damn, I have to be on top of my game here, cuz those guys are freakin legends in the open source world.” But so was Adrian. He had run several projects that has gotten good traction on Github, and that was precisely why Florian had asked him to come and show off his awesome. But Adrian was never the bragging, arrogant type. Shy and humble, submerged in an intense interest for developing the next coolest thing – he so wanted to work with these guys.

Getting on board meant to actually own an equal piece of the company and share the responsibilities, decisions, salary, perks and work with everybody else at Xtreme. And it meant getting to work with the top notch developers in the world, doing stuff that really matters. No wonder Adrian was tense.

But the week went surprisingly well. His team mates were including and helpful and he got plenty of opportunity to show his skill set. He worked on a technically challenging and interesting project that would prove extremely valuable for a customer building rescue helicopters.

He got to see the organization up close. Or rather, the lack thereof. Without any executives or hierarchy, the company was light, quick and ultra-dynamic. “But how do you make important decisions, like moving the company to new premises?” he had asked. “It’s like in this village called Endesh in North Tanzania“, Florian replied, “they get together and decide.” “All of them?” “Yeah all of them. All of us.

But don’t you need executives?” Adrian looked somewhat puzzled. “Why?” Florian inquired. “What would you need an executive for? Do you need to be told what to do? Or what not to do? Or do you need someone else to motivate you to do your best? Because if you need those things, we don’t need you.” Adrian got the drift and answered “Well, I sure haven’t needed any of that to get me this far. The bosses I’ve had have more often than not been in my way, deciding on stuff they really don’t know and without the hands-on knowledge required to make the right choices. All while they think they know best.” Florian smiled. “Then we’re on the same page here. There is no set process, formal way or exact procedure for what we do. We have the best guys in our field, we get shit done, learn, and get even more shit done. It’s a continual evolution.

Code is up

… on Github.

github-logo

Got around to putting my most useful programming projects up on Github.com. You can now easily get the newst versions, repost bugs, read the source code and fork the code to make your own version.

The projects that are up so far are:

  • npcg – the random encounters and NPC generator for the AMAR RPG
  • hyperlist.vim – the VIM plugin to easily and effectively manage HyperListS
  • hypergraph – the tool to make graphical representations of HyperListS
  • mailfetch – collect mail from different imap accounts, filter and store locally
  • imaptools – Client-side tools for imap mail
  • pc41 – Facilitating serial/USB connection to an HP-41 calculator

The next project up will probably be my collection of HP-41 programs found on this site.

Update (2015-08-28): I have now put all my relevant HP-41 related programs up on my Github page. The pages and links on this site is now updated to point to my Github projects.

Graph your HyperLists online with HyperGraph

While I was at it, I decided to make HyperGraph available as an online service. With some wrestling with Ruby (the programming language) and obscure encoding issues, I got it up and running. Now you can take a shopping or todo list, a project plan or business process in form of a HyperList and get a graphical representation in a few seconds. I love when I get into my geek cave and work on stuff like this.

The domain isene.org is where I make my online services available (currently hosting the AMAR NPCg and HyperGraph).

index