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.
- Database – Rhino.DivanDB (hobby project).
- Data Access – Multitude of those.
- OR/M – NHibernate, obviously, but a few others as well.
- Distributed caching systems – NMemcached – several of those.
- Distributed queuing systems – Rhino Queues actually have ~7 different implementations.
- Distributed hash table – Rhino DHT is in production.
- Persistent hash tables – Rhino PHT, of course, but I actually had to write a different implementation for the profiler as well.
- Mocking framework – Rhino Mocks, obviously.
- 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.
- Text templating language – Brail
- Inversion of Control containers – Windsor, and a few custom ones.
- AOP – I actually built several implementation, the most fun was with the Code DOM approach :-)
- Dynamic Proxies & IL weaving – Castle Dynamic Proxy, not the recommended way to learn IL, I must say.
- CMS systems – several, but I really like Impleo and the concept behind it.
- ETL system – Took 3 times to get right.
- Security system – Rhino Security was fun to design, and quite interesting to implement.
- Licensing framework – because trying to buy one commercially just didn’t work.
- Service Bus – which I consider to be one of my best coding efforts.
- CI Server – so I can get good GitHub integration.
- Domain Specific Language framework – well, I did write the book on that :-)
- Source control server – SvnBridge
I haven’t written a testing framework, though.
I am probably forgetting a lot of stuff, actually…
Comments
Is the right approach shown in your DSL book?
FallenGameR,
Yes :-)
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 :-)
Wow, lots of stuff. Implementing was probably a pleasure but how do you feel about maintaining and bug-fixing all of it?
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!
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.
You know, you can get medical treatment for this...
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.
Better get started on that testing framework then, Ayende ;)
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.
What is NIH means ?
Good you haven't started on compiler and build system...
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
Good for you, good. for. you.
At least I hope you haven't done the ultimate developer NIH - IDE :)
Bunter,
Several times, actually.
Here is one:
ayende.com/.../Rhino-ETL--IDE.aspx
And for my book, of course.
Rhino OS :)
Does this IDE has ASharper as well?
Bunter,
No :-)
Admittedly, I did implement Ctrl+Alt+V (Extract Business Term) in one IDE, but that is about it.
Are you going to bootstrap TDD your testing framework, like the original LISP compiler?
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?
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.
Comment preview