Miscellaneous .NET tips, code, comments, and what-not.

Tuesday, June 21, 2005

Yet another to-do list

1. Write a code snippet manager with tagging/bookmarking ability
2. Build a CMS for bookstores that automagically updates inventory on Amazon, Alibris, and other popular venues from the CMS alone, while providing a web site/store.
3. Take that same CMS and customize it for HR/Benefits/Payroll, adding document management and tagging
4. Book mark aggregator tool--integrate delicious, private bookmarks, and additional bookmarking site tools.


All of these are pretty sizeable projects, if done right. First step is...START!

AJAX and asp.net

I've written a little code that shows how to AJAX-ify an aspx web form.

1. Write a javascript function that creates an xmlHttpRequest object
2. Write a javascript function that calls the function in #1 and passes it a link to post to the code behind
3. Write your code behind to respond to an event connected with #2 and return a string
4. Remember to assign the value of the returned string to a div or something in the HTML

I'll post the code once I get my laptop on my home network so I can copy paste it. What is important here is to understand why AJAX, while old and nothing new, is a key to making web apps more equal to client/server/desktop applications.

Abstract systems

I read the thread at this link, particularly the first post, and I started thinking about what I really enjoy about programming: that every system we build, every abstract vision is a MACHINE. The machine IS the business. I can take any system, any business model, and build a reasonable facsimile in code.

I love that.

After doing this for so long, that is the way I think of the world around me; little systems that tie together to make up bigger systems. In and of themselves, the abstraction means little. But if you build it right, they can accomplish things and impact "the big picture."

The big picture is usually something like "I don't have to do that manually anymore" or "now I can understand the outcomes of my actions and make predictions based on a model", or somesuch.

Saturday, June 11, 2005

Some thoughts on direction, purpose

I've discovered the open source world. I already knew it existed, but I didn't REALLY think of it as a serious platform. I have some ideas about document management, content management, tagonomies, etc., that need a place to rest, within a role-based security structure with skins, usability, you name it.

I looked at Drupal, Scoop, DotNetNuke, XAMPP, Ubuntu, SuSE, Red Hat...and I found I prefer the BSD license structure with the Microsoft toolset. How 'bout that? I went looking deep into the FOSS (free open source software) jungle and still came out wanting the productive options Microsoft offers. Sooooo.

I compared Scoop (Perl-based, Linux only CMS) with DotNetNuke. DNN is VB.NET, but I love the structure. Scoop is neat too, but limited regarding opportunities because of its strict GPL licensing.

The key to FOSS is the licensing. BSD rules. I can write my own attachable modules and sell them aside a known open source entity that is a growing community because developers can earn money supporting it. Can't have that with Scoop, because everything I sell MUST be open source. With DNN, I can close it or open it, as I choose. Having that option is perfect.

Anyway, I am considering the option of using the DotNetNuke marketing/name recognition or re-writing my own version of it in C#, partly as exercise/fun, partly as a way to build my own brand, partly as a way to port it to Linux via Mono.

I'll have to think about that last paragraph seriously. DNN is a huge code base.

Other things to consider: marketing Scoop has its advantages/disadvantages because it is a bitch to support and admin. There is a barrier to entry that doesn't exist for DNN. What to do, what to do. I have one year of code-writing to get done on this thing I want to build. Scoop has no real community. Then there is always the dark side of Microsoft to contend with. Each side has its issues.

I'm betting I stay with MS$. ;0