Let’s Talk about Bosses

I’d like to take a moment to tell a tale of two bosses that I’ve had. I don’t really have a motive in telling this, no great feelings weighing on my heart or anything. Just wanna share and compare, and maybe someone somewhere will find something insightful.

I had a boss once who was the senior-most staff member on our team. He held his position due to this seniority and was expected to fulfill certain functions. For example, he was responsible for filling in for other staff if they were absent very suddenly, like on sick leave or something like that. He was a supervisor for the other staff and was expected to set the pace of the office, and he was responsible to the “director” of the office.

You might notice that I’m being a bit vague. This is intentional, since I want to maintain a veneer of professionalism for those I talk about. I also want to protect the privacy of those I talk about.

Anyway, despite the role that he was supposed to play, this head-staff member (quite honestly) tended to shirk his responsibilities wherever possible. The best example I can think of is when another staff member had to leave or was absent for the day, and when he was asked to fill their role for the day he quite violently argued with the Director and refused to do so. He had other, better things to do in his off-time — he was quite active with out of work activities like Jiu Jitsu and stuff. The altercations would last, maybe, five minutes, and then he would storm out of the office leaving the Director standing there flat footed with no one will fill the role that needed filling.

And, of course, she would end up turning to me to work extra hours in the day, and seeing that I’m just ever so compliant….

***

But I think probably the best example that I can think of is with regards to my vacation time. It was March, and I had plans to take an extended vacation later in the year in November. I had approached the Director asking for a very certain set of dates off, nice and early, and while I did say that it wasn’t a certain thing yet, she penciled me into the calendar with the understanding that I would later confirm my reservation of these days when I knew for sure whether I would take the vacation time.

Now let’s fast forward several months. I’ve just returned from an unrelated trip to Egypt to visit my dad, and I’ve already purchased my tickets for November. I have all the confidence in the world that I still retain my reservation of my requested time off in November, but on a whim I go in to check and see if I still have them. And, true to Murphy’s Law, guess who had reserved his name over mine? The head-staff member, my senior, my guide and team lead. No consultations to me at all.

Now, I contested this, but it wasn’t really any good. It turned out like this.

1) The head-staff member had seniority and a higher claim to what days off he wanted to have. He was attending a big jiu-jitsu conference in Brazil that couldn’t be postponed or anything like that. I was attending a convention that couldn’t be postponed either, but seniority ruled the day on that point.

2) I had made my intentions ambiguous and had not confirmed them with the Director, and since I had only been penciled onto the calendar those days were still free to grab by someone with much clearer plans, even if they were laid later than my own. He had requested his time off in June, when I had requested it in March.

3) Despite making clear that I was unhappy about the situation, my concerns were implicitly dismissed as a waste of time. “You can’t always get what you want, Jesse.” “I don’t have time for this.”

And that is what I remember most of this boss. Denying his duties, putting himself before his subordinates.

***

Now let’s talk about the second boss! She was officially a supervisor, and was primarily responsible for handling exceptional issues and pushing paper (time sheets, vacation time, discipline, and meetings). But, more than most bosses that I’ve had, she grew very relaxed and supportive of my work. And more than most bosses, she was fun to talk to and make laugh!

In my six month evaluation: “You don’t know how valuable you are.”

And when I was promoted: “I’m mad, because they’re taking one of my best agents.”

Any time I had a difficult task in front of me, she had my back. Had a special task, and she’d assign it to me to take care of. I wasn’t a senior agent by any stretch, but I would be given the perks of a senior agent anyway.

And whenever I had a particularly difficult situation, I could always turn to her and tell her what was going on and have her help me with getting it resolved. Any time that I needed something done, she would facilitate it for me and have it done in the end.

***

Now, I suppose that this doesn’t make for a very good direct comparison. I’m finding that it’s more difficult to talk about what I consider a good boss versus what I consider to have been a very bad boss. But I’ll say this much. Where I work right now, I have learned a lot about leadership and a lot about leading by example.

I think that I can safely say that I can see the value in that just looking at how my various bosses have deigned to treat me in the past. It is exceedingly important for bosses to support their staff, get their back when it’s tough, and be willing to take the lead in getting a task done. I feel really blessed to be in an institution where this is the leadership philosophy. It is such a wonderful environment to grow up in.

Time Again for Tech Speak!

Ok, so today I set about trying to figure out how to get a rotating slideshow of desktop images when loading my Linux desktop in XFCE. I had an absolute BITCH of a time trying to find any information on this one that would help me out in getting this set up, but I eventually found a solution that worked! Since there isn’t any information on this elsewhere, I figure I’ll put it here!

For those out there who use the XFCE Desktop for Linux, you may have wanted to set up custom images in your desktop background. You may or may not have noticed that there isn’t an option to rotate the images, even though you have the ability to set up a list of images to choose from. Technically, any time that you restart your computer, an image will be selected randomly from the list. However, there isn’t a way to tell the computer to, say, load up a different image or do a slideshow or something like that.

LAAAME!!

So, I started to do some research on this, and came across information that indicated that I could set up a cron job that would refresh the environment for me, which would be just like restarting the computer… without having to restart the computer. XD The command runs something like this.

/usr/bin/xfdesktop –reload

And it worked! …..but only when I ran it from the command line. Running it from crontab wouldn’t work. Bummer. So, more research. Come to find out that cron jobs run in a slightly different environment and with slightly different access than the regular ol’ command line. My command turns into this…

DISPLAY=:0.0 /usr/bin/xfdesktop –reload

And THIS works on the command line too. Basically, all this does is tell the command what X display to use when running, but it still wouldn’t work in a cron job. Uggh… and I had such a hard time finding any information on what to do at this point.

I finally figured it out after referring to my notes from the Linux class that I’m taking that indicated you could grant certain access to the X server by using the `xhost` command. Alright, so I give it a try. I added the localhost, my normal user, and my root user to the list of approved hosts, set my crontab, and waited….

xhost +localhost;

xhost +SI:localuser:<username>;

crontab -e

*/5 * * * * DISPLAY=:0.0 /usr/bin/xfdesktop –reload

And it worked! Huzzah! All of the huzzahs! Hope that this proves helpful for any Linux users out there who couldn’t find information on doing this anywhere else. C:

Let’s Talk about Friends

So, tonight I  want to spend some time on friends. I’m not here to complain about my friends – or anyone for that matter – but I do want to talk about the concept of “Friends” as it has obtained meaning to me. What’s this? Jesse’s not talking about his server tonight? MADNESS you might think! I haven’t really had anything to add to my server progress lately, seeing as my work on the Lizard Cam has allowed it to become more and more stable and I haven’t added any new services to the system.

So I’m instead going to talk about something that carries a lot of weight with me and my view of the world.

Believe it or not, I’m one of those guys who was never very outgoing growing up. Or rather, I was overwhelmingly outgoing, naive, and sensitive as a child and learned through a few bad experiences to put up a wall and be insular for most of the rest of my younger years. I didn’t make friends easily, and when I did I tended to keep only one really close friend while closing off everyone else.

This is actually how I handled my social life until very recently. I would latch onto one person that I considered a reliable and safe friend, and ignore almost everyone else. As you can imagine, this never really ended well. Put all your eggs in one basket? Yeah… And I had a bad tendency to latch onto folks that didn’t really care for me all that much. Not THAT much, anyway. Have you ever been in a spot like that? Had someone that you really really cared for who didn’t care for you anywhere near as much? Yeah, I’ve been there many times. I call it the “Like Level Effect,” where you can like someone at level 10, while they only like you at level 5. You have no idea how much drama comes out of something like this. Or maybe you do if you think about it hard enough. 😉 It’s where insecurity comes from.

Okay! So anyway, let’s talk about what it was like to live in South Korea. Did you know that I lived in South Korea? I did! I lived there for two years from early 2009 to early 2011, and I taught English as a second language to young Korean children. Even though I was living in Seoul, I didn’t find it very easy to make friends, and all of the people that I knew and cared to talk with were in the States, so I didn’t have much of a chance to talk with them. It wasn’t a very pleasant time. But this was a time that I began to confront myself on my clingy and unhealthy friendship habits.

I started to realize what it was that really made a friend something special. And I realized that many of the people I considered intimately close friends through the years were not what I wanted them to be and never really could be. At the time I was very depressed, so finally being able to admit and recognize this was a huge step forward in overcoming that. At the same time, I recognized a few people on the edge of my social circle who showed care and concern in a far subtler — yet more genuine — way than anyone that I wanted to call a “close” friend.

So began a transition. I finally recognized who I should be calling my friends. Those people are those who return the love that you give. Those are the ones that you like at level 10, and they like you back at level 10 because you liked them in the first place. You know? And because you like each other so much, you can say things to one another and not have to feel hurt, because you know that they don’t want to hurt you and couldn’t hurt you.

I guess that all of this is really just a bunch of ranty soul baring. Some of you might get it, and others might not get it quite so much. I guess the long and short of it is that I recognized that I should only really truly care about those who care for me back, at least when it comes to intimate friendship. And I can continue to like people more than they like me, but I shouldn’t have to feel angry or upset because they don’t like me as much as I like them. That just means that I can stay patient and love lots without feeling hurt if it’s not returned.

In the mean time, as far as making friends is concerned, I am very selective and only make those friends that I really feel would be worth while. I’m sure that makes some feel that I don’t give them a chance, and I’ll be honest that I really don’t sometimes. But that’s the way it rolls with me these days. I’m selective for a reason, and a lot of it has to do with all of the bad experiences I had and the lessons I took from it.

I’ll end it with this, cuz this is the simplest that I can put it. The Like Levels have to be equal. Those who don’t like me back as much as I like them, I’m patient and can wait. Those I like less than they like me… they’re allowed to. But those I like as the same level they like me; those are the best friendships and the ones I count the closest.

Officially Announcing LizardCam!

Alright, so after day one of trial runs with FFMPEG, the feed, the stream, and the crons that cycle it, I’m pleased to officially announce LizardCam! It’s no secret that I keep a bearded dragon (Chopstick) for a pet, and I’m extremely proud to show her off to the world! She’s kinda the mascot of this website even. You can find a link on my home page to the LizardCam, and I’ll put in a link at the end of this post as well.

So, now to set forth how the LizardCam will work. Since the webcam is technically broadcasting from my bedroom, I’m only going to run the cam while I’m awake. For now, the tentative schedule is going to be 13:00p CDT through to 19:00p CDT every day of the week. Currently, I’ve configured the cam to cycle once every 20 minutes. On the 19th, 39th, and 59th minute of every hour the stream will shut down. On the 1st, 21st, and 41st minute of the hour, the stream will power back on. I’m doing this to make sure that the system remains fresh throughout the long time that I’m going to be keeping it online, and I’m also doing this to test my skills in configuring cron jobs and scripts and what not.

There is always a chance that the cam will go down. Earlier today I was running the cam, and it seemed to work well for a few hours before the computer simply stopped recognizing it. Since I work throughout the day, I wasn’t able to address this problem until I got home later in the evening. If the cam goes down, no worries! I’ll just get home and get to work on resolving the problem.

Also, the cam tends to lag behind real time after a few minutes. If you see that the stream has frozen up, or if you would like to keep apprised of Chopstick’s live movements, just refresh your browser. 🙂

Enjoy the cam everyone! I’m really proud of this one, and I hope that it works well!

LizardCam!

LizardCam! FFMPEG and the Server

So, I struck on the most brilliant of brilliant ideas today, and decided to create a LizardCam! Basically, I get my web cam and hook it up to the server, then stream it live for any and all to view! But….how to actually do this? During class tonight I did some research on how to stream live video online using some sort of server, and I came across a very familiar name. FFMPEG…

FFMPEG is something that I hear about at work every now and then. It’s basically a media encoder. It doesn’t sound like anything too fancy, but basically it can accept input and then encode it into a different output. You can turn a .wav file into a .mp3 file and stuff like that. Or maybe even take video input from a web cam and turn it into something that can be streamed. HMMM… now things are getting interesting.

As with any sort of server.. setting up the configuration file to actually do what you want it to do is probably the most difficult aspect of the entire enterprise. Figuring out the CLI commands was even worse, but after giving it many many hours of work I finally managed to figure out how to get it all set up and had a working flash stream from my web cam. Huzzah! (this does not express anywhere near the amount of frustration I had to go through in setting this up)

AAAANYWAY, LizardCam is li—NOT live right now. I’m sleeping as of this post. But it will be live soon! I’m going to be running a live cam of Chopstick’s vivarium daily from 12:00p CDT until 01:30a CDT, and I have automated cron jobs in place that should turn the camera on and off at those times. We’ll see if that works when I wake up in about 8 hours. In the mean time, if you’re reading this and you’d like to see if the stream is up, check out the link below.

LizardCam!

Today is Fall of Troy Day! UPDATED

Sorry for all the silence! The server is sitting pretty where I like it at the moment, and I haven’t worked on adding anything to it over the last week. Plenty has been going on at work, though it’s been pretty rough on me. My attitude was suffering a little, but I had a good chat with my roommate (we are colleagues at work as well) and we got my head screwed back on straight.

Let’s see, what else? The lizards are doing fine, though I’m a bit concerned about Kimchi – my leopard gecko. He’s been a bit lethargic, and I’m thinking that I haven’t been feeding him entirely right. 🙁 Then again, it might just be the middle of the day and he’s tired. Chopstick, on the other hand, is just as lively and awesome as ever. She’s crawling around on the floor of my bedroom at the moment just enjoying the exercise. I swear, she is like a pit bull in just how much energy and appetite she has… for a lizard anyway.

 

So, all that aside, I rediscovered some old music that I’d forgotten about a long time ago! The Fall of Troy was one of those bands that I stumbled on by accident. If I remember right, I was looking for music that was very similar to what I already liked at the time — music that included The Mars Volta and The Blood Brothers and what not. In other words, frenetic and chaotic. This group had lots of really good stuff, but probably one of my favorites was “Phantom on the Horizon.” Those who don’t like scream-y or chaotic tunes need not listen.

Chapter 1: Introverting Dimensions

Chapter 2: A Strange Conversation

Chapter 3: Nostalgic Mannerisms

Chapter 4: Enter the Black Demon

Chapter 5: The Walls Bled Lust

 

EDIT:

Including this, because it’s the actual album that introduced me to this group.

Doppelganger

Some Additional Configurations

I swear, it seems like every day that goes by, I find something else that I can change on this server! Just today, I was chatting with one of my good friends (well… kinda half chatting : / ) and I was trying to do something in one of my IRC channels hosting from the server. And… come to find out that I can’t kick an inactive user because I’m not the operator of the channel. And even though I’m the server admin for the server as a whole, I can find no configuration or setting anywhere in the entire server that would allow me to simple usurp the channel and kick the user. Laaaaaaaaaaaaame….

So, do some research. Come to find out that this is a well known limitation of most IRC daemons, and that the way to get past this problem is to install a service called ChanServ. Uh, wat? Ok, so it’s kinda like an addon for any given IRCd which gives the server more functions and more flexibility. You download, compile, and install the service to the machine and then connect it with the IRCd using the configuration file. Once you activate the two together, the server allows you to register chat rooms such that whether you’re in or out of the room, you’re the moderator.

Ok, so that will take care of the problem for sure! But… given that I’m running the whole set up in a chroot jail as it is, I can only imagine how complex it will be to configure. And complex it was! I had to figure out where to put the configuration files and all that stuff, and I had to figure out how to make it all work properly in the chroot jail on top of that. It has made me quite cranky!

Thankfully, it’s working! That’s always the best part of working with these sorts of things, is seeing it working after all that frustration. 😀 Plus the extra service is also running in the chroot jail along with the IRCd, so there’s still that nice extra layer of security and isolation from the rest of the machine. Very, very cool stuff.

 

For those who probably don’t understand what I’m talking about above; I found something frustrating with a thing on my server, banged my head against my keyboard for a while, and when it started working I drank myself to oblivion. Just keep that picture in your head and all will be well. XD

Today is The Mars Volta Day!

Ok, so I don’t listen to The Mars Volta as much as I used to, but this is one of the bands that I really love. I first discovered this group when I was in college and just starting my big breakout phase. Before college, I was one of those Super-Christians, only listening to Christian music and classical music (strings and stuff). All other music was… unholy or unclean or what not. Right around college I started to expand my horizons, and I asked my brother in law to give me some stuff to play with. He gave me quite a fair bit to listen to (one of which was “Octavarium,” a Dream Theater album if you remember my last music post), but one that really stuck out to me was Deloused in the Comatorium by The Mars Volta. I can still remember playing Star Craft against my dorm buddies listening to that album and just being blown away at how much it struck my musical chords.

So, without further ado, The Mars Volta’s Deloused in the Comatorium. Enjoy!

 

Deloused in the Comatorium

http://www.youtube.com/watch?v=9FpjcItI8q4

chroot Challenge and Loads of Server Drama!

The other day, I was so excited to have a working IRC server on my box at home that I kinda forgot how insecure IRC was. There is a big reason why IRC is banned at my web hosting employer, since it’s so easy to hack that it represents a serious botnet risk. One of my colleagues at work revealed to me how insecure IRC was, and that it was very well known that a hacker could break through the IRC daemon to the root system and do pretty much whatever. To help secure the daemon, he challenged me to place it into a chroot jail.

“What’s a chroot jail?” I asked.

He explained that it’s a way of changing the apparent root directory for an invoked command, such that the service running under that command is isolated from the rest of the system. It runs in a separate root on its own separate set of libraries. I didn’t get it at first, but I began to grasp the concept after a little while.

Basically, chroot is a core Linux command that will change the root that a command executes under. For something like IRCd, it will start the service using a separate root directory and a separate set of function libraries that the program needs to execute its code, and it will isolate the service from the rest of the system to keep the server secure.

What an interesting challenge to set up! I had to find out which function libraries IRCd used and copy them over to a chosen root directory for my chroot jail, move over all of the /bin/bash commands to the new root, place a passwd file in the new root so that it would recognize my user, and then try to run the service. To start, I began copying all of the libs over to a particular directory, and then decided to move it around a bit.

And then disaster struck…I moved the ENTIRE primary /lib/ directory by accident……

Just so you understand what this means, it’s like someone burned all the books in the library just as I was starting to research my bachelor’s thesis. My commands stopped working, because the programs that the commands use to run could no longer reference the functions in the /lib/ folder! I didn’t realize what I’d done at first, but then the reality slowly sank in that I’d horribly, horribly broken my server! I couldn’t even move the /lib/ folder back to where it belonged to get things working again! All that work and effort and blood and sweat came rushing right up to the forefront of my mind, and I was utterly horrified…

First, I tried to see if I could mount the server hard drive on my desktop Linux system so that I could rescue the server. No matter how I tried, I couldn’t get my desktop to recognize the device, and I eventually gave up on this option. And then I remembered that I still had the install DVD image, which comes with a rescue mode! I restarted the server, inserted the DVD, and then entered the rescue mode so that I could move the libs back to where they needed to be for the system to work properly. Thank God in Heaven that I was able to do this and largely resolve the issue without any serious pain!!

Very hard lesson learned, I then continued to set up the new chroot jail, and managed to successfully get the IRC working in it. After that, I set up a couple of shell scripts executable by the root user so that I could activate and deactivate the server without any serious trouble. I’ll gladly call that a night well spent, thank you!

IRC Works!!

Finally! At long last (a few days), I have finally confirmed that IRC is working correctly on my server!

Basically, I gave tech support a call and they set up my server to be in the DMZ. I’d already tried this a few times, but every time I configured the server to be in the DMZ, the router would say that the device was off. This time, however, I just rebooted the server so that the router would recognize that it was online, and after that everything just started to work exactly how I wanted it to. It was glorious!

Finally, I can set up my SSH and my IRC servers to be on non-standard ports and confirm that they are working exactly the say that they’re supposed to. And I don’t think that the server is less secure by all that much than it was previously.

This is all too cool! I now need to take some time to learn how iptables works so that I can have that extra bit of security if I need it.