Just trying to make sense of things...

I'm Not Dead Yet

Tuesday, 3 June 2008 10:34 by jordan.terrell

It's been a while since I've posted, so I thought I'd give a brief update.  I got really sick for two weeks (bad cold, sinus and ear infection - the works), and then I had a week long vacation, so naturally all kinds of things started to pile up that I needed to work on - posting on my blog got pushed to the bottom of that list.

Hopefully in the next month I will get back to posting regularly - as for my iSynaptic.Commons framework, I'm still making some non-code changes (build scripts, licensing, packaging, ect) to get it ready for release and I'm behind on that too.  One of these days I'll actually get around to releasing it.

Thanks for your patience...

Categories:   General
Actions:   E-mail | | Permalink | Comments (1) | Comment RSSRSS comment feed

"His" Take on Vista

Tuesday, 22 April 2008 22:26 by jordan.terrell

A friend of mine just installed Vista, and he published his initial experience, which his conclusions might surprise some.  I just love how direct he is with his posts.  Sometimes that provides me with a reality check.

Now I wonder if his is running SP1 of Vista.

Categories:   General
Actions:   E-mail | | Permalink | Comments (0) | Comment RSSRSS comment feed

iSynaptic.Commons - Almost There

Wednesday, 16 April 2008 09:47 by jordan.terrell

This last weekend I hit 90% code coverage, so I'm about ready to release.  I need to update the build script to include headers at the top of the .cs files, and include the license (Artistic License 2.0) text in the distributable.  Once that's done, I will release a Community Tech Preview (CTP).

Stay tuned...

Categories:   .NET | Programming
Actions:   E-mail | | Permalink | Comments (0) | Comment RSSRSS comment feed


Thursday, 10 April 2008 09:57 by jordan.terrell

I'm right in the middle of my next wave of busy activity, both personally and professionally.  I hope to have a nice blog post soon - in the meantime, take a look at my Resource List.  I've been keeping it as current as I can...

Categories:   General
Actions:   E-mail | | Permalink | Comments (0) | Comment RSSRSS comment feed

Book Titles

Friday, 14 March 2008 12:32 by jordan.terrell

I was reading some blog posts and I came across this one.  I really appreciate the fact that David Hayden takes the time to do these reviews - I find them very helpful, and I hope someday to follow his good example and review some books myself.

However, I have a fundamental issue with the book that was reviewed.  Well, maybe not so much the book as it is the title of the book:

Beginning C# 2008 Databases?  I didn't know the C# language had databases in it!

I'm sorry but that is just a horrible title.  Something like "ADO.NET using C# 2008" or "ADO.NET 3.5, with Examples in C# 2008" would have have been so much better.

Yes, I know - I'm being a nitpicker - but for good reason.  For example, the book "Enterprise Patterns and MDA" - absolutely an awesome book - horrible title.  I don't really know what to expect to find in that book from the title - but having read an interview of its author, I knew it was worth looking at.

Take away point:  Please, if you are going to write a book, give it a good, meaningful name!

Categories:   General | Programming
Actions:   E-mail | | Permalink | Comments (0) | Comment RSSRSS comment feed

Security Issues with Reflection.Emit

Thursday, 6 March 2008 11:41 by jordan.terrell

I was thinking through the Code Access Security (CAS) ramifications of my Cloneable<T> class, and stumbled upon a pretty useful article in the MSDN library.  It makes it clear what permissions are needed for various Reflection.Emit scenarios.

I'm sure I have more testing to do in order to find which scenarios cannot use Cloneable<T>, but I'm hoping that list is a short one.

Language Oriented Programming

Tuesday, 26 February 2008 10:05 by jordan.terrell

Unless you've been hiding under a rock inside of a cave in the middle of the desert without an Internet connection, you have undoubtedly noticed that Microsoft and other vendors are hard at work developing new and updated languages that target the .NET runtime (there are also new languages targeting native code), and the upcoming Dynamic Language Runtime, or DLR.

Here is just a few (this list just scratches the surface):

All of these seem to have surfaced within the last few years, and there appears to be added emphasis to new language concepts and languages.  If we look at the history of software development and the eras, if you will, that it has gone through, you'll see three eras that are quite prominent:

  1. Object Oriented Programming
  2. Component Oriented Programming
  3. Service Oriented Programming (or SOA)

The last one, Service Oriented Programming seems to have become fully adopted into the development culture.  There are many toolkits and frameworks that allows one to build and consume services in multiple development platforms.

With this broad acceptance of Service Oriented Programming, I'm thinking that we are beginning the next era of advancement in software development: Language Oriented Programming.  I think this is a great move by the industry and as a result I feel we will see some really expressive horizontal (general purpose) and vertical (domain specific) languages come from this shift.

However, as it was with the adoption of Object Oriented Programming, I think there is going to be a significant learning curve for many of the developers out there.  Just look at the changes to C# and VB - the addition of functional and query (set algebra) programming concepts, although very powerful (and in my personal opinion very welcomed), they present a huge learning curve to those who are more junior in their understanding of languages and software development concepts.  Those of us who "grok" it, I think now have the responsibility to train as best as we can developers who are new to all these dynamic and functional language concepts.  We need to do our best to encourage them to learn about these changes.  But, even more so, all self-proclaimed software developers need to take (at least some) time to learn about these changes and their underlying concepts - because like it or not, they are coming.

Okay, I'll get off my soap box now.  As you may have noticed in one of my recent posts, I'm working on understanding compilers and languages.  This has been an enjoyable process.  I'm reading two books to help me do this:

I've stayed away from books that are too specific or narrowly focused.  I want to get a well-rounded understanding of language and compiler design and implementation concepts, without confining it to a specific platform.

If anyone has suggestions on resources that I should check out - please do let me know!

iSynaptic.Commons - Update

Monday, 25 February 2008 11:13 by jordan.terrell

I'm learning the hard way that I should take my own advice when it comes to developing personal projects.  As a professional software consultant, I'm very consistent about writing unit tests for my production code, if not first, very shortly after (within the hour).  I've heard many a developer say "I'm busy right now, I'll come back and write those tests later."  Yeah  --  it almost never happens.

So what did I do with my Commons library?  Wrote a whole bunch of code without tests!  Now I'm paying for it - I can't bring myself to release the library without more code coverage.  Right now I'm sitting at 81% code coverage, and I'm so glad that I'm working through the tests because they have exposed a few bugs.

Let this be a lesson (mostly for myself) - don't write code without tests, even if it is for your own homegrown pet project!

Categories:   Programming
Actions:   E-mail | | Permalink | Comments (1) | Comment RSSRSS comment feed

Language Designers Should Publish Their Compiler Front-End

Monday, 25 February 2008 09:58 by jordan.terrell

As of late I've been doing a lot of research on understanding and designing computer languages and compilers.  Right now I'm just starting to read two books: Programming Language Pragmatics (Second Edition) and Engineering a Compiler.  Even though I have not read very far into either of these books, I've come to the following conclusion:

Language designers should publish the source code to their compiler's front-end.

Now, in case you don't know what the front-end of a compiler is, take a look at what Wikipedia has to say about it.  To put it in oversimplified, laymen's terms: "The front-end basically parses the source code, and makes sure it is a valid."  That's it, it doesn't actually spit out your target code (e.g. machine code, MSIL, ect..), it only parses it to make sure it can understand the source code.  The back-end of the compiler is responsible for the rest (for those who are compiler savvy, I know this is overly simplified).

With that in mind, I now come back to my original statement:

Language designers should publish the source code to their compiler's front-end.

No doubt many of you have noticed the surge of development tools around refactoring and code analysis.  Most of these rely on some language parsing component to understand the source code you are working with and make suggestions.  Developing tools like these would be much simpler and consistent if everyone relied on the same compiler front-end.  Plus, I would think that it would only help to drive further adoption of the language.

I've got a few code analysis ideas that I would like to work on, and this is what has driven me to do research on developing compilers.  In order to implement these ideas, I'm going to need to write a few compiler front-ends for some of the more popular .NET languages.  Granted, there are some tools to help me do this (e.g. Lex, Yacc, Flex, Bison, Coco/R, ANTLR), but it would be so much more productive and consistent if the language designers would publish at least their compiler's front-end.

Tags:   ,
Categories:   Programming
Actions:   E-mail | | Permalink | Comments (0) | Comment RSSRSS comment feed

Sloppy Code

Thursday, 14 February 2008 12:37 by jordan.terrell

I couldn't have said it better myself.

Categories:   Programming
Actions:   E-mail | | Permalink | Comments (1) | Comment RSSRSS comment feed