Home
entries friends calendar user info The Pædantic Programmer Previous Previous

Advertisement

The Pædantic Programmer's LiveJournal
Add to Memories
Tell a Friend
I've been reading Dreaming in Code and discussing project planning & management with my housemate. These topics have reminded me of the quest for "plugable," re-usable software components. The quest has been ended for the most part for those who use Perl. The CPAN provides users of this particular language with a repository of code libraries (modules, in Perl parlance) which can be acquired, installed and applied with minimum fuss. The barrier to entry for getting your code into The CPAN is low to permit new ideas proposed by folks who don't have the know-how to prepare and revise applications. This tends to cause some problems with regard to the signal-to-noise ratio, but I think it's one of the primary reasons that the system is so successful.

In addition to this repository of code, which contains a great deal of duplicated effort, lots of modules intended only as prototypes, and pipe dreams which were never completed, third parties provide statistics about the robustness, applicability, and overall "kwalitee" of the code archived therein. As famously noted in Zen and the Art of Motorcycle Maintenance, "Quality" is a subjective concept and cannot be measured as such. "Kwalitee," on the other hand, is "a set of formalities that tend to coincide with quality, according to consensus."

There exist tools to analyze code for known problems which cause reduction in "kwalitee." The action performed by such tools is often called "static analysis." The sets of rules used in such systems to govern which parts of code are marked as somehow problematic are called "policies." There can be different classes of policies, for example security, complexity, cosmetic. When developers write code keeping such policies in mind, they are said to be "using best practices." It's hard to keep every such policy in mind when building software, so static analysis tools were developed to help gently nudge contributors back to the narrow path.

Why am I mentioning all of this? Why should any more effort be put into building a system of re-usable software if The CPAN already exists and provides all of these tools? As much as I love Perl (and I do! :) ), it has a tendency to be used to fix all problems, even when it may not be the best approach. Sometimes you need to get closer to the processor than an interpreted language lets you. Sure, there's always XS when you need to do that. But the barrier to entry is high. Another reason is that not everybody loves Perl as much as I do. Some folks want to use (for instance) C++. If the library is written in Perl, and your application is written in C++, you either need to embed a perl interpreter in your application or break your application into different processes and communicate between them. This complicates the application and such complications and prone to error.

So I guess what I'm trying to say here is that we need to take the lessons learned from The CPAN and apply them to a framework that all languages can interact with. In my experience, the most accessible language in terms of inter-language co-existence, the language most capable of getting close to the processor is C. All languages have a means by which they can re-use C libraries. The primary difficulty with C, though, is that it's hard to get object orientation right with. It's hard to create an object model that is flexible enough and consistent enough that interface bindings which feel "native" can be generated for every language.

Lucky for us, that hard work has already been performed by the folks at Sun, RedHat, Ximian and Novell. I'm referring, of course, to the GObject framework, the cornerstone of The GNOME Desktop and the Mono CLR.

So the next is a question for you, readers: What are your opinions about building a software repository intended to be "The CPAN of GObject modules"? Are there enough modules in existence to warrant the effort? Is the current system of distribution "good enough?" Is there a critical mass of people interested in using such a system?

Most importantly, is there anyone else out there interested in building this infrastructure? I've finally come to accept the fact that as much as I'd like to deny it, I just can't do everything I want to in the time I've been allotted. This seems like a project that would do a lot of good for a lot of people, but it's just too much for me to do by myself.
Add to Memories
Tell a Friend
What do you folks think? Should I run an ISP out of my house?
Add to Memories
Tell a Friend
This afternoon, right around 1620, Zelda made her first discernible laugh. In order to reduce some strain on my back, I placed her on a soft blanket given to [info]fuzzyredmittens by our friend Stefan before she and I met.

I shook my head while moving it toward her and made baby gobbldy-gook sounds. She burst into baby giggles and then stopped. I did it again and so did she.

Whee! Our little girl is growing up so fast!

Tags: , ,
Current Location: The Walnut House
Current Mood: happy

Add to Memories
Tell a Friend

*sigh*

Back from the hospital...

Syringe Fill Procedure

  1. Remove cap from solution
  2. Sanitize solution lid
  3. Remove spike from packing
  4. Attach spike to solution bottle
  5. Remove syringe from packing
  6. Sanitize spike valve
  7. Remove cap from syringe
  8. Attach syringe to spike valve
  9. Turn solution bottle upside-down
  10. Draw 1.5ML of solution into syringe, ensuring that minimal air is drawn into syringe
  11. Detach syringe from spike valve

Solution administration procedure

  1. Fill syringe as described in Syringe Fill Procedure
  2. Sanitize application valve
  3. Sanitize syringe
  4. Attach syringe to application valve
  5. Remove clamp from IV tube
  6. Slowly dispense syringe into application valve
  7. Re-clamp IV tube
  8. Detach syringe
  9. Dispose of syringe

Heparin Flush (every 8 hours)

  1. Administer saline via PIC valve as described in Solution Administration Procedure
  2. Administer heparin via PIC valve as described in Solution Administration Procedure

Medication Administration Procedure (every 24 hours)

  1. Remove medication from refrigeration 1 hour before administration
  2. Remove cap from end of medication syringe
  3. Remove cap from medication end of tubing
  4. Attach medication syringe to tubing valve
  5. Dispense medication into tubing until medication drips from opposite end
  6. Wait until medication has reached room temperature...
  7. Sanitize PIC valve
  8. Administer saline via PIC valve as described in Solution Administration Procedure
  9. Sanitize PIC valve
  10. Remove cap from PIC end of tubing
  11. Attach tubing to PIC valve
  12. Place medication syringe into pump
  13. Ensure that pump is set to Low speed
  14. Turn pump to On with Alarm
  15. Wait for alarm...
  16. Turn pump to Off
  17. Detach medication syringe from tubing valve
  18. Administer saline via tubing valve as described in Solution Administration Procedure
  19. Detach tubing from PIC valve
  20. Administer heparin via PIC valve as described in Solution Administration Procedure
  21. Dispose of tubing
  22. Remove medication syringe from pump and dispose of syringe
Add to Memories
Tell a Friend
(paraphrased)

Hannah: C.J., your driving is bothering the people behind us!

C.J.: Well, as my dad used to say, "You can make all of the people happy some of the time, and you can make some of the people happy all of the time, but you can not make all of the people happy all of the time"...

Hannah: But your driving always bothers everybody!

Tee hee.

Tags: , , ,
Current Location: I5

Add to Memories
Tell a Friend

WoLF PSORT: protein localization predictor



http://nar.oxfordjournals.org/cgi/reprint/gkm259v1?ijkey=7rAn6VnzAJbPKAO&keytype=ref

(please ignore the extra symbols in the following. I just copied and pasted from a different page to give a basic synopsis)




WoLF PSORT: protein localization predictor
Paul Horton, Keun-Joon Park, Takeshi Obayashi, Naoya Fujita, Hajime Harada1, C.J. Adams-Collier and Kenta Nakai,

Computational Biology Research Center, AIST, Tokyo, Japan, 2Center for Genome Science, National Institute of Health, Korea Center for Disease Control & Prevention, 5 Nokbeon-Dong, Eunpyung-Gu, Seoul 122-701 Korea, 3Human Genome Center, Institute of Medical Science, University of Tokyo, Tokyo, Japan and 4Collier Technologies, Everett, WA, USA

*To whom correspondence should be addressed. Tel: + 81-3-5449-5131; Fax: + 81-3-5449-5133; Email: knakai@ims.u-tokyo.ac.jp

Received January 30, 2007. Revised March 26, 2007. Accepted April 8, 2007.

WoLF PSORT is an extension of the PSORT II program for protein subcellular location prediction. WoLF PSORT converts protein amino acid sequences into numerical localization features; based on sorting signals, amino acid composition and functional motifs such as DNA-binding motifs. After conversion, a simple k-nearest neighbor classifier is used for prediction. Using html, the evidence for each prediction is shown in two ways: (i) a list of proteins of known localization with the most similar localization features to the query, and (ii) tables with detailed information about individual localization features. For convenience, sequence alignments of the query to similar proteins and links to UniProt and Gene Ontology are provided. Taken together, this information allows a user to understand the evidence (or lack thereof) behind the predictions made for particular proteins. WoLF PSORT is available at wolfpsort.org
Add to Memories
Tell a Friend
Neat. I found the following in my drafts. I thought I had lost it...




I need to re-build my entire system. Someone broke in to colliertech.org and used the system to send huge amounts of spam. This cost my upstream provider a ton of money. I then misplaced my USB disk which contains a(n admittedly obscure) filesystem with my PGP key, colliertech.org's private root x.509 key and the same for my family.

I could assume that whoever found my usb disk would pass it on to a lost-and-found location without having torn it apart, figured out how to mount the filesystem, brute-forced the password out of the pgp key and x.509 keys, etc, etc. But I won't. I will now admit defeat and start over.

But first, I'm going to read chapter 19.34 of teh RCW, some books on intrusion detection and prevention, some docs on MAC, specifically SELinux as it pertains to Debian.

My mentor and owner/operator of the largest ISPs on the Kitsap Peninsula during the late 1990s said something about the incident that made me think. He said something to the tune of "you were trained better than that."

I don't know that I had ever been trained in security, other than during my stint at Security Portal... But I only worked on writing Perl code there... I was only tangentally associated with any security stuff...

So now I'm going to edumacate myself :)
Add to Memories
Tell a Friend
So, I changed my blog name to something more catchy. "C.J.'s Journal of Studlyness" was fun for a while, but it's time to try something new. The new name ("The Pædantic Programmer's LiveJournal") is a play on The Pragmatic Programmer, but using the word "pædant" instead of "pragrmatic."

I changed the title to this in particular because:


  • everyone else has a more mature and catchy blog name than me

  • I'm re-building colliertech.org, after the most recent hacking attack, and it seems like a good time to make some major changes

  • I find myself being being more and more pædantic in my code, my work, and my life these days

  • because my wordpress blog (currently down) is my primary blog, but this one is important, too</lil>


Thoughts? I didn't find any other hits on Google for "pedantic programmer," so I don't think I'm stepping on anybody's toes...

Whee! :)

Tags: , ,

Add to Memories
Tell a Friend
I just added a README.autotools file to the Tao Framework source tree.

This will help you build, for instance a tao-opengl-2.1.0.4.tar.gz distribution file.

Comments?
Add to Memories
Tell a Friend
Zelda Mae Adams-Collier was 7lbs 12oz (the same as my brothers and me), born on Monday, the 28th of May at 10:38am.





Tags: , , , , ,

profile
C.J. Adams-Collier
User: [info]cjcollier
Name: C.J. Adams-Collier
calendar
Back January 2009
123
45678910
11121314151617
18192021222324
25262728293031
Ads by Google
foo. bar.
page summary
tags