Results tagged “cis”

Resume

I want to create online communities, content management tools, and collaboration sites through the use of Open Source software, particularly using Perl-language tools.

Education (a.k.a. how much homework I did)

M.S. in Computer Science
Kansas State University, December 2004 Manhattan, Kansas

B.S. in Computer Science
Kansas State University, December 2001 Manhattan, Kansas

Attended
Manhattan Christian College, August 1996 to December 1997
Manhattan, Kansas

Publishing (a.k.a. bragging about my ideas)

Andrew Sterling Hanenkamp, "Developing RESTful Web Services in Perl," ONLamp.com, O'Reilly, //www.onlamp.com/pub/a/onlamp/2008/02/19/developing-restful-web-services-in-perl.html , February 19, 2008.

Andrew Sterling Hanenkamp, "Single Sign-on in Jifty using CAS+ (Part 2)," ONLamp.com, O'Reilly, //www.onlamp.com/pub/a/onlamp/2007/06/09/cas-single-sign-on-with-jifty-part-2.html , June 14, 2007.

Andrew Sterling Hanenkamp, "Single Sign-on in Jifty using CAS+ (Part 1)," ONLamp.com, O'Reilly, //www.onlamp.com/pub/a/onlamp/2007/05/31/cas-single-sign-on-with-jifty.html , May 31, 2007.

Andrew Hanenkamp, ¿Using Java Classes in Perl,¿ perl.com, O'Reilly, //www.perl.com/pub/a/2006/12/21/using-java-classes.html , December 21, 2006.

A. Hanenkamp, D. Andresen, ¿Heterogeneous Channel Bonding Revisited,¿ to appear in the Proceedings of the IASTED International Conference on Parallel and Distributed Computing and Systems (PDCS 2003), pp. 387¿392. Nominated for IASTED Best Paper Award in the area of Communication Issues. Marina Del Rey, CA, November 3-5, 2003.

Skills (a.k.a. Buzzword Bingo)

Bluga Webthumbs Object-Oriented Programming Perl Best Practical RT Visual Basic Ajax Amazon SQS CGI Java FastCGI REST SOAP/WSDL Jifty C++ XML-RPC CSS XSP XHTML SQL JSP/Servlets mod_perl JavaScript XML Prototype PHP XSLT Apache Drupal Amazon EC2 jQuery Trac Tomcat Magnolia SQLite Jackrabbit/JCR Oracle Python Microsoft SQL Server MySQL PostgreSQL Amazon S3 Script.aculo.us C

Experience (a.k.a. companies and people that believed in me)

Interaction Developer
Boomer Consulting, Inc., February 2006 to present
Manhattan, Kansas

  • Business Development
    • Participate in strategic planning process at semi-annual firm summits
    • Recommend solutions regarding technical aspects of business plans and ways to profit from technology products
    • Provide technology solutions related to associations, classes, conferences, and consulting provided to clients
  • Development
    • Use and customize Open Source content management systems like Drupal and Magnolia ECM to build content infrastructure
    • Use Open Source platforms like Jifty to build custom web applications for handling surveys, statistics, and single sign-on
    • Gather requirements, design, implement, test, and document software development projects
  • IT Support
    • Manage dedicated hosted servers by installing and upgrading custom applications and other related software
    • Create server installation images and deploy and maintain server instances using Amazon EC2
    • Create documentation and handle support calls for staff and clients

Systems Coordinator
Kansas State University, October 2003 to February 2006
Computing & Information Sciences Manhattan, Kansas

  • Development
    • Customize Best Practical RT for specialized issue tracking
    • Develop a custom CMS for the internal knowledge base
    • Extend Microsoft Active Directory for cross-platform accounts
    • Develop an agent-based configuration management system, integrated with RT
  • Communication
    • Teach an undergraduate course on Computer Architecture
    • Help faculty, staff, students in a 250+ system network
    • Write policy, administrative, and end-user documentation
    • Manage four student staffers and one full-time staff person

Graduate Research Assistant
Kansas State University, October 2001 to October 2003
Computer & Information Sciences Manhattan, Kansas

  • Use J2EE, EJB, and JSP to create a prerequisite checker
  • Configure and maintain Oracle 9i RDBMS
  • Linux kernel development for channel bonding (trunking) experiments
  • Answer students' system and database questions

Part-time Network Consultant
Network Resource Group, Inc., October 1998 to November 2001
Manhattan, Kansas

  • Develop web-based project management system using Java/J2EE
  • Extend a Perl-based spam and email antivirus filtering solution
  • Build PHP-based ASP tools for monitoring client email filtering
  • Develop a Windows GUI application for data-entry in C++
  • End-user computing, server, and network support for clients

Projects (a.k.a. pro bono work)

New Hope Church web site

  • Install/maintain Drupal installation.
  • Integrate layout design and improve content design
  • Help manage content and policies
  • Develop helps and other materials on how to use the site

Jifty

  • Minor contributor to the project
  • Specifically interested in Jifty::DBI object-relational mapping API, database backed models API
  • Worked on class auto-generation
  • Built the initial graphing and charting plugin and API

CAS+ Implementation of CAS

  • Provides a single sign-on server compatible with Yale's CAS
  • Written with Jifty in Perl

Crossite Module for Drupal

  • Allows a single Drupal installation to share/not share nodes on multiple sites
  • Makes use of taxonomy to make decisions per node

Promotional Code Module for Drupal

  • Allows for registration with a promotional code
  • Grants special privileges on registration (or on activation)
  • Optionally strips privileges, blocks, or deletes an account when the promotion expires

Presence (a.k.a. other places I appear on the Information Superhighway)

Favorite Books (a.k.a. others sometimes have good ideas too)

A list of technical, non-fiction books I am currently reading or recently read and enjoyed.

  • The Myths of Innovation by Scott Berkun
  • Open Business Models by Henry Chesbrough
  • Perl Best Practices by Damian Conway (I do not frequently agree with Conway, but he does bring up ideas that make you think about how you code in Perl.)
  • Innovation Happens Elsewhere by Ron Goldman and Richard P. Gabriel

The West Wing

This is not about a TV show, but about the west wing of Nichols Hall, the building where I work. The CIS department fills up most of the west wing of this building on KSU campus including all four floors. However, if the design of this building was a positive for the CIS department in the past, I believe the design of the building itself is inhibiting CIS as a department now.

First, let's overview the arrangment of the floors. Thanks to facilities and Travis I can include some maps to help you see what I'm talking about.

Starting with the basement, we have four computing labs and two sets of offices for graduate studennts. Room 16 contains our main classroom lab and houses 24 PCs running Microsoft Windows XP. Room 16A contains offices for a half-dozen or so graduate students. Room 19 contains offices for a couple dozen graduate students. Room 21 is space that CIS gave to CNS for a general public lab for the whole campus to use (and is used by CIS for some of our 100 level courses). Room 22 is (as of a week or so ago) our special projects lab to be used whenever a faculty or student requires software that will break a normal lab machine and make it unuseful to other students---it's the smallest and least used lab. And Room 24 is the robotics lab, which is mostly used by our software project course and the department head of the CIS graduate school. The rest of the space is used by the department of Speech, Theatre, Communication, and Dance.

The other three floors are separated from the east wing by a large, three-story high atrium, which features a large mural depicting the various uses Nichols has been put to. (Nichols Hall does have an interesting past ranging from basketball stadium and swimming facilties to victim of arson—possibly in protest to the Vietnam War—to home to a very diverse set of students in computing and the oral and dramatic arts.) On the west wing, the only room that isn't used by CIS is the main office for SCTD just right of the atrium as you enter the building.

On the first floor, we have our main server lab, two student computing labs, two classrooms, two research labs, and the offices for the systems staff. Nichols 114 is the server lab for the department and includes raised flooring and an enormous and ancience HVAC for cooling. Nichols 116 is my office. Nichols 117 is the office of Travis and Tyson. Nichols 118 is the office of Cole and Andy. Nichols 119 is a research laboratory used primarily by Dr. Andresen. Nichols 122 is the largest CIS classroom capable of seating about 50 students. Nichols 123 is Earl's office. Nichols 124 is a research laboratory used primarily by Dr. Hsu. Nichols 126 is our mixed Linux/Windows computing lab with two dozen PCs and room 126D is a small conference room off to the side. Room 127 is our other classroom which seats around 30 students. Finally, Nichols 128 is our Linux lab with 17 PCs running Linux.

The second floor is mainly office space for faculty and staff. The main office is in Nichols 234 and the conference room is in room 236 next door. Room 237 is office and lab space primarily for Dr. Deloach's students. Room 232 holds the break room, mail, and copy machine. The department head's office is in Nichols 234C and the administrative staff is in N234 or N234B. The advisor's offices and the accountant are off of Nichols 232 and our library can be found in Nichols 233 off of Nichols 232, which houses our journal subscriptions, course books, loans from the main library, copies of papers published within the department, and a small meeting area where the systems staff have our weekly meetings. Nichols 218 is south of the break room and contains cubicle space used primarily by Dr. Hsu and the offices of Todd Wallentine, Dr. Stoughton, Dr. Hsu, and Dr. Robby (and yes, that is his only name, "Robby"). Nichols 219 holds cubical space for more grad students and some research space for Dr. Neilsen. Off of Nichols 219 are the offices of Dr. Schmidt, Dr. Andresen, Dr. Amtoft, and Dr. Nielsen. In the corridor between the faculty common rooms is room 223 which houses a lecture recording studio for online lectures. Room 227 holds more grad student offices and some research machines for Dr. Hsu and Dr. Hankley. Off of this area are the offices for Dr. Howell, Dr. Gustafson, Dr. Mizuno, and Dr. Hankley.

The third floor is all office space for graduate students (especially Ph.D. students), research staff, and faculty. Nichols 316 houses the main cubicle space for Ph.D. students and a few extra machines for use by them. Room 317 is also space for Ph.D. students. Rooms 318, 323, and 324 are utilized primarily by the SAnToS research group for offices. Off of room 324 are the offices of Dr. Deloach, Dr. Banerjee, Dr. Singh, and Dr. Hatcliff.

Okay, now that we know what it looks like, what's wrong? I think the primary problem with the buildings design is that it enforces a fairly segregated and professional atmosphere. Some of the younger staff have taken to occassionally started calling Nichols, "The Prison" or "Nichols Penn" because of all the doors and small spaces. The only open space in the building is the atrium and that is generally considered the territory of the more outgoing drama nuts and dance majors. Furthermore, there's no part of this space that could be useful for studying or relaxing (at least from my perspective) because the only places to sit are hard wooden benches with either no backs or backs designed to look cool rather than for comfort. Why would I relax there when I can go to a lab and sit on a cushioned office chair? There's no table space for those with laptops either.

Anyway, that leads us back into the confining spaces of the rest of the building. All the labs have heavy wooden doors that remain closed at all times (as per the fire marshall's requirement). The building's original windows remain in place, unmoved, which is a problem because the building wasn't designed with the same layout it currently has, so some of the windows, such as in N114, 116, 117, 118, and 127 are too high to see out of or deliver much light. Also, Nichols 119, 124, and 128 have no windows making for a very cave like feeling (especially 119 and 124 which don't even have interior windows). Of all the space, N126 should be the most open as it is on a corner and has lots of windows, but we've ruined that by putting in cubicle dividers, the study space in the back of the lab with the extra high dividers is an especially heinous window blockage, in my opinion—and serves little purpose since few students even know what's back there, so it's largely a dusty, unused space.

The other floors are similar. The basement is as basements tend to be, very cave-like. Nichols 16 is better than the rest, but is generally stiflingly hot because of poor air circulation—we hope to work on the problem soon. Nichols 19 has high windows that barely let in light. Nichols 16, 22, and 24 have no windows. I won't complain too much about this space, though, since I'm not sure what could be done (accept for better lighting and decore). It is a basement, after all.

The second floor and third floors are all doors. They really scream, "Go away! You don't belong here!" You have to go through at least one door to get to any professor's office door and most will go through two, three, or four doors before they even reach their professor's office. You will also have to turn multiple corners to get there. All of this presents an aura of unwelcome to students. The systems staff offices are similarly foreboding being down a back hall and around a corner that dead-ends in an unmarked door that is two steps up. Then each of our offices has a closed, solid-wood door (closed again as per the fire marshall's requirement).

All of this means that while students are supposed to be in the basement and first floor for classes, the faculty are all above the fray in offices on the second and third floors. This is nice for research staff because it means fewer interruptions, but it also means that there are extra psychological barriers to cross for students that might ask for help. Some students don't even know how to navigate the confusing labrynth on the second and third floors and don't want to bother trying after seeing it once.

Having the systems staff segregated from the main corridor is convenient for us, especially since we have no first tier support to help students, staff, and faculty with common and small problems like CNS has. However, it also means that I get a lot of apologies for disturbing me when they come ask questions (of course, that might be because I have a tendancy—unintentional, I assure you—to glance murderously at interruptions, or so I'm told by my wife). Anyway, it's still very foreboding and segregated.

Next, our decor really sucks. Most of our walls are an odd off-white hue with a tinge of purple. The floors are generally plain white tile, except for the main corridors, which are brick tiled. The lighting in this building is frightful as it's nearly all uniform flourescent tubes with their flickering, 60-cycle, greenish light that is oh so nice on the eyes. We've now replaced all the incandescent flood lamps in the halls with energy saving, twisty, flourescent tubes that look rather stupid in their sockets, bare and flickering themselves. The accents on the walls is also very plain and functional—generally limited to bulletin boards, display cases, and pictures of former graduates. The only place we had something more interesting (and even personal!) was on the second floor where our former janitor had placed pictures of her children and grandchildren, but those were taken down (sadly, that was even before she retired because God forbid that we actual have personality in the department!).

Finally, there is no place for students to take a break and for them to make Nichols a comfortable home for themselves. We need a place with a couple computers, a couple televisions, a telephone, a microwave, a couple couches, and a table—a space that's just open, pleasantly decorated, and relaxing. I know for a fact that nearly every senior class recently exiting our program has asked for this in their exit interviews. My class did and we've all been told, "Probably not."

I've talked it out with my staff and we've even come up with a plausible location for such a thing. Nichols 126 would provide an ideal location. Nichols 126 is especially ideal because it already has bathroom facilities on the south wall. If we split the room in half and used N126D and the south half of N126, we could have a fairly nice lounge facility. This could work even better if we could move part of the lab facilties in N126 into N119 (or even half of it), which is, in my estimation, currently underutilized as work space and overutilized as storage space.

Anyway, can it happen? Yes. Will it happen? Sadly, "Probably not." I think the faculty want to really improve faculty/student relations in theory, but I haven't been convinced they want to in practice. Some of them do for sure, but it seems like they are still trying to do so professionally. This generation of students doesn't buy into the "professional" mentality. Lots of them have long hair and such that they'll only cut in order to make money, but would rather work for a company that doesn't care. The companies that don't care about traditional notions of professional protocols are the ones that are making the headlines. The one that is probably the most famous is Google. They put fussball tables in the middle of their office space. They have a whiteboard along one wall that's reserved for doodling. A friend of mine works (or used to) at a company called Quantam Leap and he said they took breaks by playing risk and using fussball to decide the outcomes of battles.

Environments that encourage having a life in addition to professional productivity are becoming important. Especially because it's been shown that workers are more productive if they can really relax and be a person while at work. If CIS is really interested in impressing students that they are important and encouraging them to see CS/IS as something more than just a way to make money but an interesting endeavor in and of itself, we're going to have to start sharing personally with them. I think that remodeling our foreboding space to encourage students to interact and a way to get faculty to stop being so serious as a part of that vision.

Anyway, that's just my opinion. Take it or leave. Cheers.

I'm currently working on what a computer scientist could call an artificial intelligence autonomous multi-agent configuration management system. There are many such systems out there and they are handy when you have a bunch of a computers to keep configured in a changing environment. These systems also helpt to maintain those configurations in case someone tries to break them. For example, CIS currently uses a system call cfengine to maintain it's configuration. In general, for every configuration file we have it managing, if I change that configuration file, cfengine will make sure that the changes are undone in an hour or so. We also use cfengine to do things like kill processes that shouldn't be running, start processes that have died, etc. I'm working on my system for a slightly different purpose (though, it's possibly my system could eventually supersede cfengine in the department).

Anyway, I want to explain the terms "artificial intelligence" and "autonomous" and "multi-agent" for non-computer scientists. Autonomous is easy, it runs without direct human supervision. I was surprised to learn that all that is required for something to be autonomous is this. I thought it would mean that the program was able to make independent decisions or something, but it does not. It merely means, "runs automatically and doesn't need a human to direct it." This means that most modern computers have autonomous agents running on them to monitor disk usage, protect the system from viruses, automatically download email, and check for processes that have "Stopped Responding."

The term "multi-agent" means that there are multiple agents running together (and probably that they cooperate towards a common purpose). An "agent" is just a program (or it could be a human that helps) that does something. The way AI computer scientists throw the term around, you could probably call your web browser an agent if it does anything on it's own (like check to see if there are any new updates for installed plugins).

The, ironically, stupidest term in this set is "artificial intelligence," aka AI. This seems like a name computer scientists came up with in the 60's for a field they were pursuing in which they thought we'd have Robby the Robot by 1990. This was hubris. Basically, they fleshed out some economic theories and created a few new search algorithms and eventually created a field named "machine learning," which is less misleading if not more impressive name for a field. The goal of the field of AI can pretty much be summed up in a word picture: An AI system is supposed to figure out how to climb to the highest peak possible in a very short amount of time, but without being able to see very far through fog. The way this is generally done is by looking for the upward leading slope and following it. When all the slopes lead down, you assume that you've reached the top of the tallest peak. Which, of course, is nonsense, because it might be if you take three steps down and to your left you find an upslope that goes even higher. Furthermore, what if you start in the wrong mountain range?

The further you get into AI, the more you find that it's just more tricks for trying to find a way around the fog. What if we drop several AIs and search from multiple starting points? What if can pierce the fog a little deeper? AI is very, very simple in the basics and the field grows in tedium the deeper you get. It doesn't produce any real intelligence in programs, it's just provides a few more tools for getting answers a little faster when you have limited information (for example, if you're playing chess, it's impossible to work out all the possible moves you and your opponent can make, so you look ahead as far as you can and try to make a good judgement on that basis).

Since I mentioned it, I'll finish with "machine learning." Machine learning seems like the most interesting field in AI. However, the results of machine learning aren't as impressive as one could hope and so the utility is limited. Currently, the most popular tool in machine learning is the Bayesian filter, which is just a way of saying that a guy named Bayes invented a way of statistically analyzing data so that you could make better decisions as you collect more statistics. If you use the Junk filter on your favorite email program, it's probably a Bayesian filter. On the simplest level, these programs work by collecting statistics about what makes a good email and what makes a bad one. In general, the simplest of these is what words can be found in the email. Generally, an email that contains the name of a major prescription drug will be more likely to be spam, while anything that includes the name of one of my favorite development tools is probably not. This is why you have to tell it that something is junk or something is not. It uses that classification to determine on which side of the ledger to count each of the words or phrases found. I imagine that Google does this on a number of levels (for example, ever mispell a word in a search on Google? As I understand it, Google picks word suggestions based upon words it's seen on the billions of web pages it's examined, not based upon any human collected dictionary. Thus, it can even suggest spellings for words that name products or companies that Google employees have never heard of.)

However, this sort of thing isn't perfect because a Bayesian system can't understand English grammar. Even so, humans can make the mistake of misfiling something as spam or not (called false positives and false negaties in machine learning lingo). Bayes systems are among the best available.

Anyway, I thought I would try to explain a few things to the beginning computer scientist or to the layperson because I'm not a fan of being thought of as a wizard with computers. There's nothing more special about my knowledge except that it is extremely specialized. I can't fix my truck, I am barely capable of fixing things around my house, and I have no expertise in most fields. In fact, I don't really understand how transisters or silicon chips work. That's beyond my understanding and I even took a basic course on it once. Anyway, lately I've become a bit tired of people thinking I know magic. This stuff isn't magic, but then as Arthur C. Clarke put it, "Any sufficiently advanced technology is indistinguishable from magic."

1

Tags

Find recent content on the main index or look in the archives to find all content.