Just one geek's opinions and epiphanies

Forcing Placement with i3

So I've been using i3 for a few months, and I have been working on getting things exactly as I like, and that means more fun with the configuration. Today I decided that I don't want my Pidgin windows opening just anywhere, that I am locking them into place on the first workspace.

The Configuration

This is probably the easiest thing I have ever configured with i3, all I had to do was figure out how all Pidgin windows are named, classed, and handled, and then update my i3 config to catch the windows I want and assign them to the right workspace.


The first thing you need to know is the naming and class of your window that will be drawn to your machine. To get that info you need xprop. On an Arch Linux system you simply use pacman to install xorg-xprop. Once installed run xprop and then click on the window you want to assign.

The output will be something wild, but ultimately you are looking for a line like this:

WM_CLASS(STRING) = "Pidgin", "Pidgin"

The second value is the class of the window. So we will attach on that.

i3 Config

In my i3 config ~/.config/i3/config we simply add:

assign [class="Pidgin"] 1

Here we see the assign keyword, then the name of the class we are attaching, and then finally the workspace (1) that we want to force the window into.

Restart i3

Now you can restart i3 by pressing ctrl+shift+r and then open a pidgin window and it will attach to the first workspace.

DevOps, SysAdmin, or Something Else Altogether?

We all know the buzzwords, we here them everyday. Ok so SysAdmin is not a buzzword, but you get my point.

Who I Am, What I Do

The company I am working for hired me as a Software Engineer (a fancy way of saying PHP Developer). On the surface my job is to write code and handle problems with the code. Dig deeper and you will find that I actually do quite a bit more than just develop software.

I manage the configuration of our servers, the updates and maintenance of said servers. I work with the security team, and Ops and Helpdesk to get those machines in line with proper needs. I work with my development team to provide the services they need on the boxes. I am also in the R&D department, researching new technologies to make the jobs of my co-workers easier.

I do a lot. I am NOT a Software Engineer anymore, nope I am more along the lines of DevOps (Developer Operations). I am that guy who straddles the line between Developer and Systems Administration, but also handles the relationship with security, QA, the business needs, telecom, and I am sure I am leaving someone out.

Ideally I would continue on my path from Software Engineer to full time DevOps (Manager), and continue helping to create better environments and faster deploys for my team.

The Dilemma

My company is working its way to an IPO, and this introduces some problems for the continuation of my career path. The problem is that we have to become SOX (Sarbanes Oxley) compliant. One of the requirements for SOX is a separation of environments. Basically put, software engineers can no longer handle server details. We can't even touch the production servers.

On the surface, that sounds great for my career path. I can stop developing the software, and continue working on the continuous integration, the deployment scripts, the server architecture, the configuration management, and work on better tools to better support my team.

However, I find more and more that those roles are being taken from me, and handed off to what will eventually be called "Application Engineer".

The Opportunity

Our company is hiring Application Engineers. One of the developers on my team was actually approached by a local recruiter for the position (somehow they missed that he already works for the company). Long story short, the position pays more, and according to the description on the website, is more like what I want to be doing.

This position will be working in a 50/50 Linux/Windows environment. Experience dealing with COTS and proprietary software. This individual will have experience working with the QA and software development team and will be heavily focused on applications (configurations,management),Apache, IIS and code deployment.

Really the only problem I have with this, working with Windows. I haven't used Windows for more than a gaming machine in quite some time. I have latched onto the Open Source scene quite well, and I have really enjoyed it. I have grown accustomed to finding solutions, writing fixes, and configuring the hell out of my systems. The thought of working on out-of-the-box solutions just seems wrong to me. I want the customization. I want the challenge.

However, more pay, and more Systems Administration like work is up my alley.

At the same time one of our SysAdmins left the company this week. That position has been filled, by a very junior admin, but he is family to another admin and will be trained well in time. However, there are two other positions they are hiring for and I have considered those positions as well. Again, the only hang up being that I would be dealing with Windows environments.

To be honest, the Windows thing aside, I think I would like being a SysAdmin for up to 5 years, and then I would want to get back to being the middle man. The DevOps guy.

So what do I do? Do I apply for the Application Engineer position? Do I look at becoming an Systems Administrator? Or do I stay where I am, and force my boss to let me do more DevOps work?

i3 Config and xev

For those who find Gnome and KDE to be boring, try i3. i3 is a tiling window manager, which means it tries to use 100% of your screen realestate for your windows. I switched to i3 a few months ago when there was a pretty large bug in Gnome 3, and I didn't have time to wait for a fix.

Today I wanted to get a few things working in i3, that just hadn't before. The first (and arguably the most important) was volume control. I use a Lenovo ThinkPad T430. It has dedicated volume buttons. They however had no effect on the volume of my laptop speakers. So I wanted to fix that. So, how do you do that? Simple, you configure you i3 to bind the key and then run a command to adjust the volume. Easy right? Not really. Here is what was really envolved in such a task.

Configure i3: keybinding

Adding key bindings to i3 is simple, in your config file (either ~/.i3/config or ~/.config/i3) you add something like this

bindsym XF86AudioRaiseVolume exec amixer -c 0 set Speaker 5+

Let's talk about what that all means!

bindsym tells i3 to bind the key that follows. So we tell it to bind XF86AudioRaiseVolume to a exec, which executes a command.

But, where did we get the XF86AudioRaiseVolume value? From xev.

xev: x event viewer

Ok, I am honestly guessing at what the v means, but it is good guess.

If you open up a terminal and type xev into the cli you will get a couple things. The first is your cli will dump lots of data at you, the other is a mostly blank window. Move your mouse around in the white window, or press keys while your mouse is over that window and your cli will fly with changes. Press your volume up button and you should get some stuff that looks like this:

KeyPress event, serial 32, sythetic NO, window 0x1a00001, root 0x251, subw 0x0, time 1926937, (99,532), root:(1170,552), state 0x0, keycode 123 (keysum 0x1008ff13, XF86AudioRaiseVolume), same_screen YES, XLookupString gives 0 bytes: XmbLookupString gives 0 bytes: XFilterEvent returns: False

KeyPress event, serial 32, sythetic NO, window 0x1a00001, root 0x251, subw 0x0, time 1926937, (99,532), root:(1170,552), state 0x0, keycode 123 (keysum 0x1008ff13, XF86AudioRaiseVolume), same_screen YES, XLookupString gives 0 bytes: XmbLookupString gives 0 bytes: XFilterEvent returns: False

Here we can see the keysum 0x1008ff13, XF86AudioRaiseVolume, that tells the symbolic link to our key. Congratulations you can now identify key events in X!


So what is this amixer business? Well, that is bit harder to explain, but I will do my best.

The command we issue is:

amixer -c 0 set Speaker 5+

amixer is the commandline tool for adjusting alsamixer (Advanced Linux Sound Architecture).

First you need to identify your cards. Honestly, I need to learn this more, but the jist is this:

amixer -c 0 will show you all the mixer controls for card 0, depending on your setup your main soundcard might be a different number. Specifically I am looking for the Speaker control for my card. I know this from adjusting things in alsamixer. I will have to research more how to figure this out from the cli.

So the full command works like this:

amixer -c 0 set Speaker 5+

amixer, on card 0, set Speaker to whatever it is, plus 5 (I believe that is 5% more).

Volume down

I tied the other button (volume down) to the same command but backwards

amixer -c 0 set Speaker 5-

then I bind that to the appropriate key:

bindsym XF86AudioLowerVolume exec amixer -c 0 set Speaker 5-

More fun with sound control

I still need to figure out how this will work with headphones plugged in and compensate. I also need to make the mute button work. Wish me luck.

Getting Back to #GeekLife

Life has been hectic lately. To recap the last year, I started a great new job, have taken on way more responsibility in life than I should have, and I have fallen away from some of the things I really love to do, like blogging.

So I am attempting to make a go of it. For starters I am fixing my blog. I have updated Ghost, and I am going to use forever to make to run, well forever.

Then I am going to start writing more often. I know, I have made this promise before, but this time I am motivated. I have a silver bullet, I am adding a -f to my blog command. I am forcing myself to write something, even something mundane and horrible every day. No excuses.

The Plans

Last week I attended Open West Conference. It was amazing to see all the people come together for common goals. The common goal being the love and sharing of Open Source technologies. There were even some great talks that weren't actually about technology, but the managing and inclusvitiy of technology.

While at the conference I blew the dust off my Twitter presence and really knocked out a bunch of tweets. Nearly 100 tweets in just a few days. I got a lot of traction from those tweets too, so that was the first stoke of the flame.

I also talked to a lot of people IRL and realized I really like doing that, face-to-face. It has given me insight into things I want to try in the future.

I also did a lot of thinking about the technologies I am using at home, and how I could better utilize them to make things in my house easier, or more fun.

Finally, I remembered why I became a geek in the first place. To play, to learn and to understand. Don't just give me a wall of buttons, tell me what each button does, and why. So I am getting back at it, I am digging in and I am learning.


The New Net10

Well, Net10 is at it again. You may recall just a few months ago (June 2013) I informed some folks that truly unlimited data was available by switching to a T-Mobile SIM (the pink Net10 sims). Well if you are a power user like I am, then you are aware that policy has changed, again. There is no longer a truly unlimited plan. Don't bother calling Net10, they will transfer you to the completely useless "High Data Usage Line", which only informs you that you have exceeded your 2.5GB of data, and have been throttled, and won't be unthrottled until the end of your prepaid plan. It's crap.

What now?!

Last time we had a policy change at Net10 we simply had to change SIMs, well this time the game has changed. To get truly unlimited data you just have to, switch networks. Net10's website lays it out in black and white, there is not more truly unlimited from them.

The choices for data are now 500MB, 3.5GB, or 5.0GB of data. These plans drop in at $40, $60, and $75, respectively. What a joke! I would wager these prices are being mandated by their backing networks of AT&T and T-Mobile as their pricing comes right around that of the two backers.

To compare the prices, Tmobile has 500MB ($50), 2.5GB ($60), and an truly unlimited for $70. That is not a bad option really, but still, $70 for a truly unlimited plan is a bit crazy.

Back to SimpleMobile?

So my first thought was to go back to SimpleMobile, since that was the first MVNO I really cared to use, but I was quickly saddened when their pricing page showed they too were bucketing and throttling connections.

Simple's plans are now 1GB for $40, 3GB for $50, and 5GB for $60. That isn't heading in the right direction at all. Frankly, the $70 for truly unlimited at T-Mobile is looking pretty good. Let's keep looking.

Back to the MVNO list

Looking at the list of MVNOs out there (which has grown nicely in the last year or so), you would think more options would show up. Well you'd be right. Here are a few I have found:


Their plan is simple. 30 days for $55, and it is never throttled, but you are limited to 2GB of data. Then it is a hard off. Ok, that isn't really going to work for me. Let's try again.


Now this is a promising setup. The more users there are, the lower the monthly minutes price is (sitting at $30 as of this writing). Here is what it is all about:

A constant countdown that reflects next month's service rate based on the number of new customers in the current month.

Basically, the more people that sign up each month, the lower the next month costs. The good side is that it will never go above $35, but can go as low as $0 (not likely, but it could happen).

The drawback here is that data is an additional fee (well it comes with 500MB), but you can purhcase a 2.5GB ($15) bucket or an unlimited bucket ($25).

So for a fee of $60 or less ($35 + $25) you get unlimited data and unlimited minutes and text. All backed on T-Mobile. Well, that is $10 cheaper than T-Mobile. Sounding good to me.

Setup on 35orless is $35 (plus data) which includes shipping and the SIM. So you are setup and going as soon as you order.

So, just like that?

No, trust me, I did the due diligence here, and I have checked out a lot of MVNOs over the last 24 to 48 hours (since being throttled). This is a decision that seems sound, and I will of course keep abreast of the landscape that is MVNO land, because I continue to be contract free, and willing and able to jump to any provider available. Wish me luck.