*

IBM projects and work

While working at IBM I did quite a bit, and obviously I can't really show or display most of what I did while there, but I'll try to explain and show what I did as much as possible. My accomplishments there break down into 5 categories:
  • Debugging code, both java and C++
  • Managing, debugging performance issues, and writing SQL for SQL Server
  • Writing internal tools used by hundreds of employees
  • Training on advanced topics
  • Troubleshooting network or appliance issues
Debugging Code

This is fairly self explanatory, but essentially we have multiple products that would have bugs which needed to be investigated. This included crashes from C++ code, stack traces from java code, errors in the server messagelog, etc. The easiest problems were tracing an issue from a java stacktrace. The hardest ones were also with java, but only because they were memory leaks in the Geronimo J2EE server version we were using and debugging involved getting a memory dump, opening it in a java profiler to figure out what was gong on, and then hacking activeMQ (the JMS library used) to create a patch for the version we already had released.

SQL Server: Managing, debugging performance issues, and writing SQL

This was great experience since a lot of the databases jumped up to 1 TB or over. Managing the databases involved fine tuning permissions and the server for the applications in use. Debugging performance was mostly just profiling, checking execution plans, indexing, and providing locking hints when deadlocking popped up under load. Most code was written in store procedures for loose coupling and better performance, although some queries were unavoidably dynamic and were created through hibernate.

Internal Tools

I kept up a little suite of applications I wrote for inner-office efficiency which became widely used throughout the division. While some of them were more for fun or personal use, many were extremely complex including a KBA submission and approval system, a wiki written from scratch, and a search engine for searching company records. All of these except for one were deployed as a web application for ease of use. The only one that was not was unfortunately too specific to be discussed here.

The KBA system was a response to the fact that no good approval system was in place. Using my program, people could submit a KBA for a particular product that would then be approved by those who know most about that particular product and could verify it for accuracy. Upon approval, it would then go to the documentation team to be written for the customer facing system. A screenshot of it is below.



The Wiki was in response to a need for a centralized information center for products, tweaks, tricks, general knowledge, explanations, etc. While several good systems already existed, I really wanted something that would integrate into my already existing portal and that I could use a company LDAP login for. None really existed that seemed good enough, so I just wrote my own. It basically has categories that can be nested, and articles can be linked into one or more categories. Each article can be edited by anyone using an integrated WYSISYG editor, but changes are tracked and anyone can view the article history or revert changes. Screenshots are below.



Here is a screenshot when viewing the change history and a particular revision



The Search tool was probably the most used and most complicated of anything. It consisted of a backend search engine based on the Apache SOLR project, which then indexed data from customers, the KBA system, the WIKI I wrote, and more. Results could be rated which increased their search priority. I also duplicated google suggest for the search box (see the screenshot) so you could view similar past searches from what you had typed already. The data searched was inserted into a MySQL database and indexed by posting XML to SOLR using perl and python scripts. The scripts were automated with cron jobs and would connect to other servers via API calls or spider already existing web services and parse out the relevant data. The data display was also intelligent and would not only display data appropriately for it's type, but would allow translation of highlighted text (by using ajax calls to the server which then would hit google translate) and formatting of email chains to remove redundant data. Check out the screenshots below.





Training

This was actually one of the most stressful things I did. I volunteered to provided some SQL Server and generic database concepts training to about 20 employees. Because only a few people per team could attend, I decided to video record the training in 2 hour intervals in lecture form, and take questions in between each interval. This way, people not attending could watch the video later and ask questions from those that attended. I went through basic database theory through real world performance concepts specific to SQL Server. In the end, I transcoded the video to FLV format and put them on my portal for anyone to view on the company network.

Networks and Appliances

Due to our product line, I received advanced experience in just about everything you can imagine including firewalls, routers, transparent proxies, spam filters, web filters, IPS/IDS, anomoly detection systems, centralized desktop control, server security, VPN technology, cisco switches, and scanners. My favorite appliance is the Proventia M because it's so versitile. It's basically everyting mentioned above rolled into one which makes it extremely complex but extremely fun to play with. As you can guess, diagnosing packet captures was pretty common, but other fun things included diagnosing network routing or design issues, writing custom security checks for the IPS module, and configuring high availablity with failover capabilities between two appliances.




reece
home
history
baby
photos
calendar
addresses
wall
projects
4006
word
flickr
monitor
chat
lolmail
work
cocard
ibm
resume
dev
sudoku
security
portsentry
portknock
badbot
setuid
web
greasemonkey
visitors
links
downloads
misc
art
vote
influence
waffles