I am a programmer at heart, and I write far more code than prose. This is a log of everything I write rather than just the occasional screed or missive on some inane topic. This, then, is a truer "web log", a brief history of what I've been writing lately. If you're not interested in the code, or the prose, or whatever, you can always filter that stuff out using the toggles in the left column.
- 10 edits1 add in trunk
- Adding experimental Arrow service that uses Treequel to return ou=People records.
- Made Branch#create create the underlying entry instead of a child to better match what #delete, #modify, etc. are doing.
- Treequel::Directory:
- Fixed the argument list passed to LDAP::Conn#search_ext2 to match what the actual code expects.
- Modified #create to create the entry underlying the branch passed in the first argument instead of an entry specified by RDN.
- Treequel::Filter:
- Factored out the tuple-parsing part of .parse_array_expression into a separate method.
- Added a fallback to tuple-style expressions to handle expressions like { :uidNumber => 1414 }
- Treequel::Branchset
- Made it Enumerable
- Added #limit
- More work on the manual
There's nothing like doing integration work between a MS Project Server instance and a Rails app to make you appreciate anything else.
- 2 edits in trunk
Removing the call to Time.today from the specs, as it requires the loading of 'time'.
- 4 edits2 deletes in trunk
- Added Treequel::Branch#to_ufn
- Removed Treequel::Connection class in favor of just handling the specific problems in the #search method.
- Changed Treequel::Directory#search to be implemented in terms of #search_ext2 instead of the deprecated #search2
- 4 edits in trunk
- More manual work
- Whitespace cleanup
- 1 copy in releases/2.0.4
Branching for release 2.0.4
- 4 edits in trunk/ext
- Updated with Discount 1.4.4.
- 2 edits1 add in trunk
- Adding the beginnings of an experimental object-mapping (tree-based ORM analogue) for LDAP entries.
- Added handling for > and < Sequel expressions
- 1 edit in trunk/lib/treequel/utils.rb
Updated HTML logger formatter to the latest.
- 3 edits in trunk
- Renamed Treequel::Branch#modify to #merge
- More manual work.
- 1 edit in trunk/docs/manual/src/tour/parsing.page
A little work on the parsing page of the manual.
- 1 edit in trunk/docs/manual/src/index.page
Fixed some LAIKA references in the manual.
- 9 edits1 add in trunk
- Fixed docs on the binding arguments for Treequel::Directory#initialize.
- Fixed some typos.
- Stopdoc'ed the sub-modules under Treequel::Constants.
- Made Treequel.directory more flexible.
- Added a tentative logo to the diagrams.
- Updated the manual CSS and templates from Redleaf's.
- Manual work.
- Made the initial argument to Treequel::Directory#bind accept an object that duck-types as a Branch.
- 4 edits in trunk
- Added delegation to the connection wrapper.
- Fixed a bug in the Treequel::Delegation code-generation when it generates a delegated assignment method (#foo=).
- 2 edits in releases/1.0.5
Oops. Merging version bump to 1.0.5 from trunk.
- 2 edits in trunk
Bumping version to 1.0.5.
- 1 copy in releases/1.0.5
Branching for release 1.0.5
- 18 edits2 adds in trunk
- Fixed RDoc headers.
- Started work on a connection-abstraction that handles referrals, exception-normalization, and reconnection.
- Merged filter constants into the Constants module's namespace and factored out some duplication and inconsistency.
- Some manual work.
- Fixed a buggy substring filter spec that was uncovered by the constants refactoring.
- 4 edits in trunk
- More manual work.
- Fixed page presentation in CSS.
- 2 edits in trunk
Removed experimental TSort support -- RDF graphs are not acyclic
Ruby + Talisker = a good Sunday
- 6 edits in trunk
- Updated build system.
- Manual work.
- Trimmed some trailing whitespace.
- 7 edits in trunk
- Added some work to the Graphs tour page.
- Modified the W3C spec templates to generate more-descriptive names.
- Made the local spec:gdb output prettier.
- 6 edits in trunk
Fixed problems with the specs run on systems with non-English locales (fixes #7).
- 4 edits1 move in trunk
- Updated build system
- Updated included link-grammar library to latest (4.5.7)
- 9 edits in trunk
- Updated the build system.
- Untaint all schema names before trying to turn them into Symbols so it works under $SAFE = 1.
- Fixed some documentation, updated the description with something less-vague.
- 2 edits in trunk
Updated the build system -- will hopefully fix the broken CC build.
- 9 edits2 adds in trunk
- Adding BranchCollection? class.
- Treequel::Branchset
- Added #base_dn method
- Added the base to the inspection text
- Made argument to Treequel.directory optional
- 6 edits2 adds in trunk
- Updated build system
- Fixed a bug in Treequel::Branch#to_ldif
- Modified Treequel.directory to also accept a options hash.
- A little work on the manual
- Started an OmniGraffle? doc for manual diagrams
- 2 adds in trunk/lib/mues
Adding MUES::Engine and mixins module.
I’ve been playing around with the Webkit-based HTML view that TextMate provides for HTML command output, especially to see if I could use its fancier features to make an RSpec runner that was a little shinier and had some features I find myself monkeypatching into the default TextMate runner for every project.
I’m in love with the ‘Resources’ view that bleeding-edge WebKit’s Web Inspector includes, so I set out to adapt the progress-bar half of the page to reflect the status of examples, and ended up with something I’m pretty happy with.
After many weeks of pointless tweaking and perfectionist procrastination I released BlueCloth 2 yesterday, but the announcement seems to have been swallowed by the ruby-talk list server (I tried to post it twice). I’ve posted it here if anyone’s curious.
Recently while trying to track down a memory problem in Redleaf, I ran across a curious bit of code in Ruby 1.9.1’s ‘uri’ library (in uri/common.rb specifically):
1 @@to_s = Kernel.instance_method(:to_s) 2 def inspect 3 @@to_s.bind(self).call 4 end
I can’t help but wonder if this isn’t a bit of defensive programming against monkeypatching or something. Is it done this way to avoid exposing a public #to_s?
It’s a mystery. Perhaps I’ll have to go track down the commit message for this change. Or if anyone knows, feel free to leave a comment.
I’ve been working for the last 7 months or so on an RDF library for Ruby based on the Redland C library. I tried to use the bindings for it that are distributed under the redland-bindings package, but like with most SWIG-based bindings to C libraries, I found it brought me out of thinking in Ruby whenever I had to call into it. It’s not the author’s fault — a custom binding for any language takes time and a sense for its idioms — but I felt like RDF and Ruby could mesh better than the functional interface could express. I felt like scratching the itch I was feeling would not only help me learn more about Redland and RDF, but it would make the barrier to entry lower for other people interested in using Ruby together with RDF.
So I started Redleaf, and it’s pretty much at the point I wanted it to be for a 1.0 release. There’s still a few features that Redland has that aren’t accessible from Redleaf (graph contexts and transactions are the big ones), and I haven’t even tried it under 1.9 yet. I’m also pretty sure my string translation back and forth from Redland’s unsigned char *s to Ruby’s char *s will cause problems down the road (with UTF8 data, maybe?). Ruby 1.9’s strings-with-encoding are looking pretty good for that, but I have a lot of code to port before I can make the leap to 1.9.
Mostly what’s left to do is documentation work. The API docs are pretty solid, but the manual is only about 20% done. While I think I can probably release without having it done, I’d at least like it to cover the library well enough that people can start using it without too much experimentation.
So I’m off to write some more docs. Hopefully I’ll be far enough along by March that I can release it then.
We recently decided to ditch ActiveRecord for our domain classes at work for Sequel. We’ve already been using Sequel for a great deal of the database work we’ve been doing lately with our usage and trending analysis tool for our NetApp GX and our render farm, and it’s really a solid piece of work that makes interacting with a database a breeze. It’s nice to be working with datasets for this kind of stuff instead of having to pull out tons of objects just to grab a sample of a single column and throw them away again. Sequel lets you use all the features of your database, but the easy stuff is just as easy.
We’ve been feeling the pain of trying to track ActiveRecord updates, and it keeps making moves further away from being a useful library in environments other than Rails. I’ve been using Sequel::Model for this site’s back end, and the ORM parts of it are just as clean and powerful as the core. We’ve already done conversions of our most-complex and most-connected classes, and we’ve spiked out all the stuff we weren’t sure of and in every case the code shrank, things got a lot less magical, and the functionality stayed the same or improved.
A salute to Jeremy Evans, Sharon Rosner, and all the other people that made Sequel so great. It’s going to be a lot of work, but I’m looking forward to it.
The last two years has given me renewed respect for PostgreSQL, too. It’s performing like a champ under a steadily-increasing load (~ 8M inserts/day), and its partitioning, tablespacing, and triggers make doing data-warehousing stuff relatively painless. It’s in big part due to the genius of our DBA that set stuff up for us initially, but it was partly his enthusiasm for it that made me motivated to dive in and start learning more.
Hopefully I can convince Mahlon to write up the work he’s been doing with partitioning and tablespaces at LAIKA.