tag:blogger.com,1999:blog-73593529756604394242024-02-20T18:12:23.725-05:00Backyard BambooMichaelhttp://www.blogger.com/profile/01020829360408821410noreply@blogger.comBlogger54125tag:blogger.com,1999:blog-7359352975660439424.post-19059442097232366512010-08-05T21:49:00.004-04:002010-10-15T10:36:17.995-04:00Changing jobsWell, tomorrow is my last day at SciMed Solutions. I have been there (and with sister company Net Friends) for almost 7 years. That's the longest I have ever been with a single employer. In that time I have learned LOTS.On Monday, I start over with Epiphany Cardiography Products. They are small but successful and do a lot of things well. I like the team that I'll be on too. My role there Michaelhttp://www.blogger.com/profile/01020829360408821410noreply@blogger.com0tag:blogger.com,1999:blog-7359352975660439424.post-48122906491389469592010-02-18T11:46:00.004-05:002010-02-18T11:58:07.493-05:00EfailLately, I have been really dissatisfied with communicating through email. It just seemed to be such a low rate-of-return on my time spent communicating. I found a few links from people that think this way too that spell it out pretty well.Is Email = Efail?Email: The Variable Reinforcement MachineEmail Is For Old People?Michaelhttp://www.blogger.com/profile/01020829360408821410noreply@blogger.com0tag:blogger.com,1999:blog-7359352975660439424.post-39404169522538801342009-10-15T16:02:00.003-04:002009-10-15T16:10:37.409-04:00Shibboleth2 on Ubuntu 9.04Here are my notes on how I got Shibboleth2 compiled from source on Ubuntu 9.04. YMMV.Adapted from https://spaces.internet2.edu/display/SHIB2/NativeSPLinuxSourceBuild apt-get install wgetapt-get install build-essentialapt-get install apache2apt-get install libxerces-c28 libxerces-c2-devapt-get install libxml-security-c14 libxml-security-c-devapt-get install libcurl4-openssl-devapt-get install Michaelhttp://www.blogger.com/profile/01020829360408821410noreply@blogger.com1tag:blogger.com,1999:blog-7359352975660439424.post-34114474961067485992009-08-04T10:59:00.003-04:002009-08-04T11:19:49.422-04:00Installing ESX 4 from USB FlashThe target server had a CD drive and I only had a DVD .iso file that was about 835Mb. I discovered that the server's BIOS would allow me to boot from a USB flash drive. I used unetbootin to burn the .iso file to my USB drive. Next, and this is the important part, I booted from the USB drive and pressed the Tab key when presented with the boot options for ESX. That then brings up the standard Michaelhttp://www.blogger.com/profile/01020829360408821410noreply@blogger.com3tag:blogger.com,1999:blog-7359352975660439424.post-63702083617877694162009-08-03T10:20:00.003-04:002009-08-03T10:29:03.321-04:00stackoverflow.com is the best thing since sliced breadI love stackoverflow.com. If you do any programming at all you must check it out. I had a really tough programming bug last Friday and posted a question on stackoverflow with the appropriate tags to help with classifying the questions. Within an hour I had two excellent responses one of which was from Python luminary, Alex Martelli. (His answer turned out to be correct -- no surpise there.)A Michaelhttp://www.blogger.com/profile/01020829360408821410noreply@blogger.com0tag:blogger.com,1999:blog-7359352975660439424.post-66239261836087677822009-07-13T09:31:00.002-04:002009-07-13T09:37:35.712-04:00IPTables protection against brute SSH attacksOne annoying thing I see in my servers' logs for which their respective ssh port is not restricted is that there are always brute force attacks every day. For various reasons some of the servers that I administer have to have wide open ssh ports. I found two sites today that show how to use IPTable's "recent" module to slow down those brute force attacks. It works great!http://Michaelhttp://www.blogger.com/profile/01020829360408821410noreply@blogger.com0tag:blogger.com,1999:blog-7359352975660439424.post-86354641872707442722009-02-11T10:42:00.006-05:002009-02-11T11:14:44.326-05:00Python multiprocessing vs. threading performanceI recently wrote an application using the threading module in the Python standard library. The application itself was basically attempting to discover Open Reading Frames (ORFs) in a DNA sequence. The application appeared to be mostly CPU bound.Running the application in a single thread took about 6 seconds for my test data. Running it continuously over 3 threads took about 30 seconds per run!Michaelhttp://www.blogger.com/profile/01020829360408821410noreply@blogger.com0tag:blogger.com,1999:blog-7359352975660439424.post-19868220772307177452009-01-09T16:01:00.004-05:002009-01-09T16:15:55.744-05:00Database Trigger vs. ActiveRecord CallbackOut of curiosity, I wanted to compare the performance of an ActiveRecord "after_save" callback versus a PostgreSQL "AFTER INSERT" trigger.I prototyped the functionality in Rails. I got the logic clean and simple. Next, I ported that logic to PL/pgSQL. I wrote a few time-related functions to keep the code clean but it was identical in flow and logic to the Rails code.Lastly, I ran the the Michaelhttp://www.blogger.com/profile/01020829360408821410noreply@blogger.com1tag:blogger.com,1999:blog-7359352975660439424.post-12145763559890588332008-12-19T09:07:00.002-05:002008-12-19T09:29:00.798-05:00Native Postgresql Data Types for ActiveRecordIn researching ActiveRecord migrations, I came across this bit of new information in their documentation: Instantiates a new column for the table. The type parameter is normally one of the migrations native types, which is one of the following: :primary_key, :string, :text, :integer, :float, :decimal, :datetime, :timestamp, :time, :date, :binary, :boolean. You may use a type not in this list asMichaelhttp://www.blogger.com/profile/01020829360408821410noreply@blogger.com0tag:blogger.com,1999:blog-7359352975660439424.post-4864773553982313382008-12-18T09:19:00.002-05:002008-12-18T09:25:50.882-05:00Ruby's native postgres gem on WindowsThe ruby-postgres gem is a compiled and fast adapter. It has some dependencies for Windows, though, so follow these steps to get it running properly: go to the http://www.postgresql.org/ftp/binary/ and navigate to the release that matches the Postgres server that you installed.look for and download a file that follows the pattern postgresql-8.X-binaries-no-installer.zip where the X corresponds toMichaelhttp://www.blogger.com/profile/01020829360408821410noreply@blogger.com0tag:blogger.com,1999:blog-7359352975660439424.post-29375892997004613222008-12-17T16:23:00.002-05:002008-12-17T16:29:26.713-05:00Pylons and SQLAlchemyI recently gave Pylons and SQLAlchemy a spin. I mainly wanted to check out SQLAlchemy so that I could evaluate it for upcoming projects. Well, my opinion is that it is wildly flexible and, therefore, came with a steep learning curve. Pylons wasn't too hard to grasp although it seemed sort of arcane at times. I genuinely liked Pylons though.This has been a disappointing experience for me. I Michaelhttp://www.blogger.com/profile/01020829360408821410noreply@blogger.com4tag:blogger.com,1999:blog-7359352975660439424.post-48659293384316170472008-12-17T16:19:00.003-05:002008-12-17T16:23:03.100-05:00Ubuntu destop is so broken...I've had it with Linux on the desktop.Things that didn't work...my office's Java based SSL VPNflickr uploaderall sound and, therefore, dependent applications like Skypeand more...To be fair, the issue is mostly with my computer's particular hardware. For example, my computer's NVidia card driver constantly pegged the processor at 25%. Not acceptable.I am sad that Ubuntu on the desktop didn't Michaelhttp://www.blogger.com/profile/01020829360408821410noreply@blogger.com0tag:blogger.com,1999:blog-7359352975660439424.post-71333455448435281302008-12-13T07:58:00.002-05:002008-12-13T08:01:07.530-05:00So far, so goodThe switch from XP to Ubuntu has gone just fine so far. There are a couple of things that I'd like to work out. One is that I can't seem to connect to my office's SSL based VPN which uses Java. I have the 1.6 JRE from Sun installed and configured but, when I connect to the office VPN, it just freezes up Firefox.I also need to try the proprietary NVidia Geoforce graphics card driver. The Michaelhttp://www.blogger.com/profile/01020829360408821410noreply@blogger.com0tag:blogger.com,1999:blog-7359352975660439424.post-39336305191810857182008-12-12T13:58:00.003-05:002008-12-12T14:04:41.117-05:00Ubuntu - here we go againSo, I got a new laptop at work. It's a Dell Vostro 2510 with a 250gb 7200rpm SATA HD and 4 Gb RAM. It came downgraded to XP. I had installed Ubuntu to dual-boot with XP. That worked okay but for some reasons that I can't remember I wasn't quite satisfied and decided to remove Ubuntu. That happened on Monday.After having settled for XP I started to set up my many applications. After a day orMichaelhttp://www.blogger.com/profile/01020829360408821410noreply@blogger.com0tag:blogger.com,1999:blog-7359352975660439424.post-31259655276189532802008-11-19T23:12:00.002-05:002008-11-19T23:15:12.828-05:00PHP+IIS="No input file specified"I was having frustrating problems with PHP on an IIS site complaining that "No input file specified." The frustration came from the fact that I am facile with Apache but know next to nothing about IIS. Ultimately, I came across this link which completely solved my problem.Michaelhttp://www.blogger.com/profile/01020829360408821410noreply@blogger.com0tag:blogger.com,1999:blog-7359352975660439424.post-1451340177540817102008-11-05T08:40:00.003-05:002008-11-05T08:53:45.811-05:00Narrative tests? Maybe but probably not.There is a lot of buzz (probably always has been) for moving to narrative test frameworks and away from classic Unit Test frameworks such as Python's unittest and Ruby's Test::Unit. Having never tried a narrative test framework I'm partial to the classic frameworks for both Python and Ruby if for no other reason then they function identically so the framework is the same for both languages Michaelhttp://www.blogger.com/profile/01020829360408821410noreply@blogger.com0tag:blogger.com,1999:blog-7359352975660439424.post-32264419248016547812008-10-09T12:05:00.003-04:002008-10-09T12:13:29.790-04:00Apache https proxying Mongrel with file uploadWe had a Ruby on Rails form that did a POST of some form data including a file upload. The setup was Apache 2.2 proxying a bunch of mongrels on a Windows server. Port 80 was set to redirect to 443 via a rewrite rule. The proxy modules that we were using included proxy_http_module, proxy_balancer_module, and proxy_module. With that setup the file upload was failing. It appeared to timeout Michaelhttp://www.blogger.com/profile/01020829360408821410noreply@blogger.com0tag:blogger.com,1999:blog-7359352975660439424.post-74230057164248975382008-09-17T08:12:00.003-04:002008-09-17T08:20:56.261-04:00Python popen deadlocksI have a python script that calls out to an external program using os.popen3(). That function returns file handle like objects for stdin, stdout, and stderr. I need to examine both stdout and stderr separately.After running this script for a while I started to see it hang at times. This was especially true after I added in a parameter which increased the amount stderr. It turns out that thereMichaelhttp://www.blogger.com/profile/01020829360408821410noreply@blogger.com0tag:blogger.com,1999:blog-7359352975660439424.post-52900096520569027812008-09-11T10:39:00.004-04:002008-09-11T10:53:57.322-04:00Backups Reorganization pt. 10: VerificationI set up automated verification on the 4 backups servers on every backup job that they run. That simply involved the correct usage of the --verify option to rdiff-backup. This option calculates SHA1 checksums on files in the backups and compares them to the backups metadata. I don't put much stock in this process but feel that it is necessary to actually perform. Besides, the overhead is Michaelhttp://www.blogger.com/profile/01020829360408821410noreply@blogger.com0tag:blogger.com,1999:blog-7359352975660439424.post-24474779976067888062008-09-03T17:20:00.004-04:002008-09-03T17:25:00.284-04:00Backups Reorganization pt. 9: RetrospectI finally got around to addressing the backup of the one server that resides behind the firewall. I can't use the approach I had been using, that is, having the backups server initiate the backup because the backups server is itself outside of the firewall. The simplest thing to do is to backup the target server from within the firewall. As it turns out, my company has a couple of dozen Michaelhttp://www.blogger.com/profile/01020829360408821410noreply@blogger.com0tag:blogger.com,1999:blog-7359352975660439424.post-88812689813396453532008-08-27T13:21:00.002-04:002008-08-27T13:26:17.304-04:00Shelving AMQP for nowI recently put a lot of effort into working with the relatively new messaging queue protocol, AMQP. This involved reading the v. 0.8 spec., source code of some implementations, the RabbitMQ docs and boards, and the source code of the py-amqplib module.Ultimately, I could not get the AMQP client and broker to behave in ways that I expected. This is a real disappointment because I had high hopes Michaelhttp://www.blogger.com/profile/01020829360408821410noreply@blogger.com3tag:blogger.com,1999:blog-7359352975660439424.post-38187315255505273922008-08-26T14:58:00.002-04:002008-08-26T15:06:00.776-04:00Python logging.fileConfig() weirdnessI wrote a draft of a python application that I intended to turn into a Windows service. In it, I used the logging standard module and the fileConfig() function to configure up multiple log handlers and other cool logging related things. All of that worked great when run as a simple script on a Windows box.When I wrapped up the functionality in a Windows service, however, the logging killed the Michaelhttp://www.blogger.com/profile/01020829360408821410noreply@blogger.com0tag:blogger.com,1999:blog-7359352975660439424.post-48805920627305754022008-08-12T10:00:00.002-04:002008-08-12T10:05:18.256-04:00Backups Reorganization pt. 8: OracleI was saving the Oracle database backup for last because I felt that it would be the most difficult to do right. As it turns out, the client's chief Oracle user and DBA has already done most of the work. He is dumping the databases that he cares about to a server and directory which I am already backing up. I need to ask him to try do do a test restore though. That's pretty key.In the Michaelhttp://www.blogger.com/profile/01020829360408821410noreply@blogger.com0tag:blogger.com,1999:blog-7359352975660439424.post-34079853995280067292008-08-11T15:28:00.003-04:002008-08-11T15:34:30.170-04:00Backups Reorganization pt. 7: ZopeThe client has three versions of Zope running on three servers. I took the work that I did to discover and dump the Subversion repositories and retrofitted that for Zope databases. It wasn't too difficult and I simply extended an existing class in the package that I am building. Writing the test cases took the most time, as is often the case.The only thing that was a little different was that Michaelhttp://www.blogger.com/profile/01020829360408821410noreply@blogger.com0tag:blogger.com,1999:blog-7359352975660439424.post-7765905595372664662008-08-05T15:22:00.006-04:002008-08-05T15:57:53.045-04:00CCP4 on RHEL5CCP4 is an open-source, scientific application used in crystallography. It is written in C++ and Fortran and runs best on Linux.A client needed help today in compiling this application on Red Hat Enterprise Linux (RHEL) 5. This blog posting is intended to provide a brief outline of getting CCP4 running on that platform.Here's what not to try:download sourceuse yum to get all of your Michaelhttp://www.blogger.com/profile/01020829360408821410noreply@blogger.com0