Ayende @ Rahien

Refunds available at head office

The NIH dance

I started thinking about all the type of stuff that I had to write or participated at, and I find it… interesting.

  1. Database – Rhino.DivanDB (hobby project).
  2. Data Access – Multitude of those.
  3. OR/M – NHibernate, obviously, but a few others as well.
  4. Distributed caching systems – NMemcached – several of those.
  5. Distributed queuing systems – Rhino Queues actually have ~7 different implementations.
  6. Distributed hash table – Rhino DHT is in production.
  7. Persistent hash tables – Rhino PHT, of course, but I actually had to write a different implementation for the profiler as well.
  8. Mocking framework – Rhino Mocks, obviously.
  9. Web frameworks– I am referring to MonoRail, although I only dabbled there, to be truthful. Rhino Igloo was a lot of fun, too, if only because I had to.
  10. Text templating language – Brail
  11. Inversion of Control containers – Windsor, and a few custom ones.
  12. AOP – I actually built several implementation, the most fun was with the Code DOM approach :-)
  13. Dynamic Proxies & IL weaving – Castle Dynamic Proxy, not the recommended way to learn IL, I must say.
  14. CMS systems – several, but I really like Impleo and the concept behind it.
  15. ETL system – Took 3 times to get right.
  16. Security system – Rhino Security was fun to design, and quite interesting to implement.
  17. Licensing framework – because trying to buy one commercially just didn’t work.
  18. Service Bus – which I consider to be one of my best coding efforts.
  19. CI Server – so I can get good GitHub integration.
  20. Domain Specific Language framework – well, I did write the book on that :-)
  21. Source control server – SvnBridge

I haven’t written a testing framework, though.

I am probably forgetting a lot of stuff, actually…

Comments

FallenGameR
01/12/2010 10:23 AM by
FallenGameR

ETL system – Took 3 times to get righ

Is the right approach shown in your DSL book?

Joannes Vermorel
01/12/2010 10:28 AM by
Joannes Vermorel

NIH is a widespread antispattern that should be avoided at all cost. One of the few known exception to this rule is known as the "ayende" exception, because "ayende" happens to improve stuff he reinvents. The "ayende" exception should kept confidential because way too many people tend to think they can be an "ayende" exception too :-)

Rafal
01/12/2010 10:45 AM by
Rafal

Wow, lots of stuff. Implementing was probably a pleasure but how do you feel about maintaining and bug-fixing all of it?

mqaa
01/12/2010 10:57 AM by
mqaa

And you still manage to find time for eating, sleeping, writing posts and have some sort of social live? That would be the real amazing thing about this list!

Joe
01/12/2010 10:59 AM by
Joe

Castle, NH (with NHProf) and Rhino Mocks are mandatory in my projects now. I've just code spiked Rhino Security and I love what I've seen. Also, I can see myself checking out Rhino ETL in the future.

So a big thank you for making my development work look a whole lot better than it ever would have been.

Grimace of Despair
01/12/2010 11:36 AM by
Grimace of Despair

You know, you can get medical treatment for this...

Demis Bellot
01/12/2010 12:00 PM by
Demis Bellot

NIH is a widespread antispattern

I disagree, there's usually a cost/benefit ratio whenever you need to choose to NIH or not. It normally costs you the time to develop and a reduced number of features but it saves you some time learning someone else's api .

Another benefit to rolling your own, is that you'll know your software intimately, how it works/performs so when there is a bug rather than trolling through forums looking or waiting for a fix you can do it yourself.

Mark
01/12/2010 01:24 PM by
Mark

Better get started on that testing framework then, Ayende ;)

Josh
01/12/2010 02:26 PM by
Josh

i don't know how you find the time. between paying clients, fluentmigrator, occasional blogging, 2 side projects, and my family, i just don't have time for much else. let alone all that you are involved in.

NIH
01/12/2010 03:30 PM by
NIH

What is NIH means ?

Bunter
01/12/2010 04:05 PM by
Bunter

Good you haven't started on compiler and build system...

Ayende Rahien
01/12/2010 04:18 PM by
Ayende Rahien

Bunter,

I DID do a build system, I just remembered.

And while it isn't full blown compiler, I would say that my DSL work is pretty close

gfy
01/12/2010 05:00 PM by
gfy

Good for you, good. for. you.

Bunter
01/12/2010 05:02 PM by
Bunter

At least I hope you haven't done the ultimate developer NIH - IDE :)

Dave
01/12/2010 10:24 PM by
Dave

Rhino OS :)

Bunter
01/12/2010 11:13 PM by
Bunter

Does this IDE has ASharper as well?

Ayende Rahien
01/12/2010 11:14 PM by
Ayende Rahien

Bunter,

No :-)

Admittedly, I did implement Ctrl+Alt+V (Extract Business Term) in one IDE, but that is about it.

Kevin Stevens
01/13/2010 02:54 AM by
Kevin Stevens

Are you going to bootstrap TDD your testing framework, like the original LISP compiler?

NC
01/13/2010 05:23 AM by
NC

Was curious what SVNBridge was so i googled it and saw it on codeplex.

I realise you don't support it, lost interest?

Could you list the stuff you've written that you support?

Me
01/13/2010 01:18 PM by
Me

It's easy with no steady girlfriend, wife, or kids to please.

Gosh I remember those days. Eat code, eat code, eat code, sleep a litte, code, then code some more. Then got married. Eat, code, listen to bitching, do crap to shut her up, then back to coding. For some reason she thinks I like my computer more than her.

Comments have been closed on this topic.