I got a few photos of a rather beautiful “sunset afterglow”. The sunset was more beautiful than the images, however. I don’t know whose fault that is.

Sunset on Leesburg

Shutter: 4 Seconds, Aperture: F/5.7, ISO: 64

Sunset Over Leesburg

Shutter: 4 Seconds, Aperture: F/6.8 ISO: 64

Posted on July 12th, 2009 | Filed under photography | No Comments »

Rejoining the workforce, if only temporarily, has reminded me of what it’s like to be productive. That’s not to say that my education is unproductive, but you do get a sense of accomplishment when you come home every night from a 9-5. You also feel some daily pains when it comes to things like team spaces, both physical and virtual. This is especially true if you’re joining an established team with idiosyncrasies to which you haven’t yet grown entirely comfortable.

I made a reference list of rules to obey when using a team Exchange server or other tool supplying a calendar service. While some of the following rules may seem like common sense to you, I challenge you to check yourself against these rules and see if you aren’t violating at least one of them. Actually, in writing these rules I picked things that I do too, but I won’t tell you which ones.

Raymond’s Rules for Team Calendars (Outlook, Google Calendar)

  1. All teammates must agree to use the calendar service as their primary method for personal appointment management and the collaborative scheduling tool. *
  2. Each member of the team is accountable for their own calendar.
  3. Calendars must be shared with openly with all teammates.
  4. All calendars must be up to date to provide for efficient meeting scheduling and accountability.
  5. All employees are in one of three states at any given time and their calendars should reflect this:
    • Free/Open – No scheduled events or appointments labeled as “Free” to show they do not require direct physical attention.
    • Busy – Unavailable or occupied during the time of this event.
    • Out of the Office – Time period when the employee is not located on campus. (Includes telework, alternate duty locations, vacation, personal days)
      In the event of an unexpected scheduling change the team member should make alterations to reflect that change as soon as feasibly possible.**
  6. Tentative appointments should be firmly changed to “Accepted” or “Declined” as soon as meeting attendance is most likely ensured. ***
  7. Exceptions are allowed in the form of incalculably, but necessary, overlapping appointments.
  8. It is reasonable to accept an event meeting and cancel in the event of an unexpected change.
  9. Do not add/save items on your calendar that do not serve a purpose in scheduling your day. Extraneous meetings and unrelated events that a team member does not effect the workday should be removed.
  10. Notes/Changes/Modifications to events made on calendars should be performed and tracked through the calendar service to preserve process continuity and centralized storage for meeting related data on changes or additions.
  11. Members who plan to actively attend meetings (i.e. offer input, act on authority, plan to ask questions) should be added by the meeting manager to the official roster and be notified of changes like other participants.

*If this a team cannot agree to dedicated use of the system then the team must agree to live in chaos.
**Enabling permissions for a second office-mate to modify a calendar would allow for support for meeting organization and last minute changes.
***All plans are tentative by nature so labeling events as “tentative” implies a further uncertainty than is experienced daily by mortal beings of this universe.

Casual Tips:

  • Any foreseeable blocks of work time in which a teammate prefers to be uninterrupted should be labeled on their calendar.
  • Further use of color coding to specify certain complex cases may be used, but it should be thoroughly enforced. For example, teleworking means an out of the office status but you are available for phone calls and will be responding to email just as you would if you were in the office, so a color code or tag may apply to this situation to help coworkers.

As with anything, you may disagree or agree, but I hope you’ll communicate with me either way. If I’ve forgotten something that you think belongs on this list, I’d love to hear it. This is only version one, and there will be other rules to come.

Try printing this off and sharing it with your teammates at your next meeting.

Posted on June 17th, 2009 | Filed under Uncategorized | No Comments »

(Please note that time speeds up and slows down in this article I started writing on the 18th of April)

As I sit in The Greene Turtle at BWI, I realize that the moderately sporty theme and full bar may give me an interesting possibility for introspection. So, with great resolve I start in on a fairly tasty, avocado burger and ponder the recent events of my life.

(Well, that was as far as I got before I was tempted with a piece of Macademia Nut Cheesecake, but that’s how writing works. At this point I’ve finished off my tasty meal and traveled a few hundred miles to find myself suspended in the air somewhere over Missouri.)

The most taxing part of my life, lately, has been the quest to get an internship for this summer. Being a grad student is apparently not difficult task enough to satisfy the gods, I also have to fill out loads of paperwork and fly to the east coast a few times.

I don’t like to complain too much, and the reality of the matter is that I’ve really benefited from the experience. Through interviewing with several different government agencies on more than one occasion I now feel a sense of immunity to the stinging barbs of the interviewing panel. It’s not that there are any shattered glass ceilings (for the 20-something, white male in America), but after your 20th interview in 6 months you start to place less and less stake in each one. I think half the battle is just realizing that you are wanted in this big ol’ world. Nearly everyone has the right to feel that way, but I think I didn’t let myself do it for a long time.

I’ve also become more comfortable in saying no to people. There are, literally, hundreds of places that are easily accessible to a person in computer science right now: everything from application development to taking a hammer to a hard drive. Personally, I’m just not the kind of guy that likes to track down criminals, plug small boxes into other boxes, or build robots. After everything I’ve been through I now can tell those employers that we just don’t have any chemistry and not fee. Once you realize that you’re wanted somewhere, it becomes a lot easier to do this. If I were to give any advice to a person nearing graduation at any level it would be to not accept offers just because you got them.

I’ve started to focus my knowledge of core computer organization and process flow into the field of information management and data visualization across systems. Most of my closer friends know what it’s like when I get a “topic-crush”, and right now its for data collection and aggregation. I’ll buy the drinks if you want to chat about this topic.[I'll probably leave your part of the tip for some older crushes like telecommuting, web development education, economics, or the possible existence of a Bizarro-Groucho Marx]

This new passion is partially enforced by my current research on network-based intrusion detection systems. Part of my groups task has been to create a testable out of band network for managing and sniffing traffic across large, distributed networks.

My biggest contribution thus far has been a redesign of the processing server and the way data is being handled in the short and long term. This sort of architecture really got me excited about my career because of the way I could see my knowledge and input change the process. I wasn’t always right in the choices I made, but the team was able to correct the misinterpretations or detect flaws in the design fairly quickly.

All-in-all, the solution we arrived at was fairly satisfactory, and I’m already seeing ways of improving our model. Additionally, I was also able to create a web-based GUI for accessing the new information and rendering a rather crude network visualization graph. It’s a non-trivial problem for two weeks time, especially since I still struggle with graph theory.

(This has been forgotten on my phone for over a month and a half, and now the author finds himself sitting on the couch. Feeling the red-afterglow of a Netflix-hosted episode of Outer Limits…I journey forth.)

This summer…well, I guess I don’t know what my goals are. I think I might stay cool on the personal technology side of life. I’m living with two good friends within minutes one of the most fascinating cities in the world. I think that the next 3 months will be devoted to seeing, smelling, and tasting as much of the East coast as possible. As friends may attest, I seem to have a lot more time for things “next month” than I do “this month”.

Posted on May 14th, 2009 | Filed under personal | No Comments »

I’ve been meaning to get into podcasts for a while now as a way to expand my sources and let me pick up more stuff while on the road.  Also, it’s a little more fun, which is one of the biggest biggest advantages I see to podcasting: the presentation of valuable information in a manner that’s a little more social and palatable than black-on-white. (Read on…)

Read the rest of this entry »

Posted on March 28th, 2009 | Filed under Uncategorized | No Comments »

Sometimes it’s good to have a moment of reflection and take stock of your position in life. I’ve heard that it is when you are at your busiest moments when you need to stop, if only for a moment, and consider all the things in your life. Well, I’m busy. Too busy, in fact, to look at all the things in my life, so I’ll just hit a few of recent technology moves that I’ve made. (Read on…)

Read the rest of this entry »

Posted on March 27th, 2009 | Filed under personal, programming, reviews, software | 2 Comments »

Whenever I desire to know the nerd quantity in a room I use a fairly simple test that I perform:

  1. Start a conversation with a nearby ‘normal’ about something interesting that isn’t solved easily (This also works if you’re mid-lecture and you’re instructing on some problem)
  2. Begin to say: “Well, that’s an interesting problem. It’s kind of like an episode of MythBuster’s where they <insert some myth here>.”
  3. Start the timer.

In any case, shortly after you complete step 3 you should notice that someone has turned around and said the following words to you “I SAW THAT EPISODE!!! THEY …..”.

At this point, two things happen. First, you roll your eyes or breathe in loudly and try to continue your conversation with the normal. Second, if you’re lucky, you’ll notice immediate exponential growth and the expansion of the conversation into a third or fourth person who say “Hey, are you talking about MYTHBUSTERS?!? I saw that episode, they….”. If you are not lucky, the first nerd will sense a lack of social protection, realize there’s no outlet for the feelings and words he needs to express and it will instinctively latch onto your skull and scream into your eardrum about dummies and explosives.

(That’s why I always start each test with a zeroth step: 0. pray silently to the goddess of probability that every room’s nerd quantity is x where x > 2)

You see, this test operates on the well known fact that most nerds are annoying. Contrary to popular culture, however,  this is not a cute, fun, innocent annoying. This is the kind of annoying that causes eye bleeding and blackouts. I know because I get them on a daily basis. If you don’t understand this problem, I’ll let you review the thousands of dollars in unnecessary medical bills resulting from annoyance-related accidents.

For all you nerds out there:

Please stop freaking out about MythBusters. I say this for the sake of my health and your image in society. I don’t think anyone truly dislikes the show, but please stop making it something that you salivate over. It’s just television…just television. Normal people don’t even react like that to the birth of a child, and, to be perfectly honest, it’s kind of freaking the rest of us out.  Especially since it happens once a week.

Posted on March 10th, 2009 | Filed under nerds, personal | No Comments »

I pose a challenge to any and all who read this blog: tell me how to disable binary logging on a 5.1 installation of the MySQL community server on a Windows XP box.

He who finds the Holy Grail and can return the magic elixir found therein to me shall be heralded as one greater than all in the land.

Posted on February 26th, 2009 | Filed under Uncategorized | No Comments »

Over the last two semesters I’ve found many-a-use for a couple Java functions to aid in reading and writing to byte-level values. I don’t have the time to create an entry in the OSS section of the website so I’m going to post them here for now. This release is under the Creative Commons license.

They consist of ByteUtil.java and BooleanUtil.java

Download Zip

Feedback welcome, updates and additions are welcome as well. Please let me know if this has helped you at all.

Posted on February 15th, 2009 | Filed under Uncategorized | No Comments »

Subtitle: Makes an A$$ Out of You and Me

I ran into an issue last night with MySQL Workbench that frustrated me. I’m working with a table of medium-low complexity (about 10 Tables and 15 foreign keys) that I’ve inherited in joining a research team.  At this point I’ve reworked the whole thing to be a little more robust, but when I did so I ran into some problems on importing the results into a table.

On some of the tables I was getting an “Can’t create table <x> (errno: 150)”, which turns out to be a foreign key(FK) creation failure. I then realized that all of the tables that were failing were referencing the same core table, but with no visible issues. The primary key on the table was a composite of two  surrogate keys [INT(10) in this case]: one from the parent table and a local one.

I immediately thought that the FK definitions might have been incompatible, and so I combed through some of them for reasons why this would happen. I looked through InnoDB reference documentation in search of limitations in the implementation. Maybe there was a limitation on the number of keys referencing a single table, or on chaining “cascade”, “set null”, “restrict” behaviors, or on the maximum length for foreign key field names. Nothing.

I was up until 2 in the morning in the office last night with this problem with no success and eyelids with exponential density growth. When I got in today I quickly realized that it was just a simple conflict between ‘unsigned’ and normal int values in the foreign keys and relating tables.

My beef: All of the table declarations were made in MySQL workbench. Relationships and everything were formed using the exact same tools for all of it, and yet some of my columns were unsigned and some were not. Additionally, there was seemingly no way to change this value in the interface. Well, it turns out there is.

How to enable zerofill, unsigned, and other flags in MySQL Workbench:

  • Go to (Menubar)->Tools->Options
  • Open the ‘Diagram’ Tab
  • Ensure “Show Table Column Flags” is checked

My biggest beef: A good programmer should never assume that a tool is doing what he wants it to do. If there’s no visible indication that numbers are being given unsigned classification, then that’s your job.  I wasted a few hours on this problem, but my jedi masters should be pleased that I’ve resolved this error in less than 24 hours. PEBKAC ftw.

Posted on February 14th, 2009 | Filed under databases, programming | 1 Comment »

I was recently visited by a friend who is also an IT professional. Some time during the visit, I casually made the recommendation that programmers should take a drafting course. I was a bit surprised to receive a contradictory opinion, but it was well received and has forced me to further justify my position in my own mind.

My case is rather simple; Read the rest of this entry »

Posted on January 12th, 2009 | Filed under programming, software, tips | No Comments »