Recently, I blogged about some of the Open Source .NET DAL implementations I’ve worked with and mentioned Adapdev whose primary developer is Sean McCormack. Sean had posted a message to the Adapdev blog about slowing development but this morning while I was reading through my blog feeds I found this post explaining that the slow down didn’t really materialize and mentioning some nice updates to several of the projects related to Adapdev.NET. Sean also mentioned that he’s nearly completed a new ORM framework called Elementary which I’ll be very interested to look at.
Like many people I wanted to add my own personal touch to my blog and creating a theme was high on my list. My first task was finding a simple CSS based layout that included the typical three columns, header and footer. Back in August of 2004, I blogged about a three column layout I’d created and thought it only appropriate to put it to real world use so if you reading this from my website the layout is pretty much the same one I posted two and a half years ago.
DasBlog is very easy to theme and you can use any HTML as your site template which provides a huge amount of flexibility not to mention it includes over 20 themes so there are lots of starting points. To create a new theme you’ll need to do the following:
- Create a new directory under the dasBlog’s themes directory
- Copy the files of an existing theme into the new directory
- Tweak the various CSS and *.blogtemplate files to your liking
- Edit SiteConfig\site.config and change the <theme> tag to the name of the directory you created above
- Edit themes\yourthemename\theme.manifest and set the attributes of the <theme> tag accordingly.
I used some of the files from a theme called “dasblog” primarily because it has dasblog.css which defines CSS classes for all of the elements used in dasBlog which is a real time saver. Along with the HTML markup a dasBlog theme template contains macros which at runtime, render the various blog elements and appear like the following in your template:
This particular macro renders the Search box in the upper right corner of my blog. Do worry though even though it’s an ASP.NET application you really won’t need ASP.NET experience to create your own theme. Another nice thing is that I’ve yet to run into a macro that doesn’t allow for theming.
Where to get theme ideas
There are lots of resources on the web related to design, here a few that I look at for ideas:
If there is interest I’ll make my site design available just let me know.
Update: Fixed Part III URL
Since the beginning of the Highlander (vNext BDS) development cycle the team has been using Agile and at this point, it’s safe to say I’m still on the fence about it. The decision to use Agile wasn’t quick nor was it made on the first day of the project, rather it came after numerous discussions and actual training sessions with an Agile instructor/consultant. Now, I’m not blaming the consultant and in fact, if anything the instruction was useful for us to improve our development process for reasons unrelated to learning Agile. I believe there are projects which would/could benefit from a strictly Agile approach however, given our team size, the disparate skill sets our staff has, the size and complexity of the IDE I think we’re likely to have to reexamine and adapt our use of Agile which isn’t a surprise and I’m sure at least some people in the Agile community would say that that’s what Agile is all about.
Prior to this year I’d say our development process was a modified version of waterfall which has seen it’s ups and downs. One point I’d make though is that when there are changes in the engineering staff, the technology, the market, the business and the management is it fair to blame the process when things go wrong? I’ll be the first to admit our process can and needs further improvement and we’re committed to and actively working on those improvements today. In fact, I’ve blogged a lot about our development process much of which has evolved even since last year and not just because of our use of Agile.
Like most engineers my team has lots of ideas about how things could be improved and in many cases those ideas are acted upon independently and our process incrementally improves. Perhaps one of the best things to come from all the focus on Agile and XP is simply the fact it has gotten engineers actively interested in thinking about the development process. Of course, it hasn’t hurt that the discussion has been accompanied by lots of tools for things like unit testing and continuous integration which I believe really helps drive engineering interest.
It’s interesting, I think most of the process improvements our team has enjoyed this past year occurred organically driven, not by management, but by individual engineers with a desire to utilize the maturing set of tools that are available today. I believe one critical turning point was our single minded focus on quality for the BDS 2006 release. I believe the release itself was high quality but since November of last year we’ve released at least seven updates more than triple what we normally ship. It’s this same desire to ship quality code that has fueled much of the process changes we’ve put in place in the past 12 months.
I haven’t really talked about why I’m on the fence about Agile and at some point I’ll fill in the blanks but one thing is clear, IMO the BDS development team is actively moving in the right direction.
A little over a year ago I blogged about getting Microsoft to provide access to the new ribbon UI available in $g(Office 2007) and just recently they’ve announced a licensing agreement. While I would prefer to see MS make their implementation available like the existing common controls this seems like a fairly reasonable exchange. Reading Jensen Harris’ blog it seems that developer request help make the different in getting this pushed through. Thanks Jensen for getting the word out!
Update: Here is a video of Jensen discussing this announcement.
A Data Access Layer, commonly referred to as a “DAL” is code that provides the ability to view, edit, update and otherwise manipulate persistent data within an application. In many cases, a DAL can be generated from a database schema and alleviates developers from the task of writing highly repetitive code. All of the DAL’s I’ve looked at have benefits and detractors so the task of actually selecting the perfect implementation isn’t straight forward and will depend on the application requirements as well as the developers ability work with the given DAL implementation.
There are lot’s of DAL implementations available like:
- nHibernate which is a port of Hibernate core
- SubSonic – the zero code DAL
There are many others but the above list represents ones I’ve either experimented with or actually used with the one exception being CLSA.NET which I’ve seen mentioned in numerous places and thus why included it.
A few months ago SPOIL implementation in particular caught my eye and seems quite interesting. In fact, I did some digging on this one and found that a BorCon speaker Steve Scott presented the same idea at BorCon 2003 and even before that Atif Aziz had developed DBMethods though there is no mention of it in the MSDN article (referenced above) but I did find an interesting comment from Atif. For a website I’ve been working on over the past few years I chose to use CodeSmith 2.6 which is a freeware code generator specifically for it’s “collection of database templates” which are included in the download. These templates provide several pieces of the DAL puzzle including:
- Stored Procedure generation for all CRUD operations
- Command wrappers for the above stored procs
- Typed datasets
- Business Objects
- Typed collections
Of course, lots of things have changed since I made my choice, CodeSmith is up to version 4.0 and now sold commercially and AFAICT garnered quite a following not to mention .NET 2.0 was new at the time and there wasn’t a whole lot of support for it. Additionally, the templates were subsequently updated to utilize C# 2.0 features like generics. CodeSmith is an easy to use code generation tool that has an interesting template technology that borrows techniques from ASP.NET. I’ll admit it took me awhile to convince myself that I needed to go this route at all but eventually I was satisfied with the decision. I’d have probably gone in a different direction today though I don’t really feel locked into the decision I made since the code is fairly boiler plate and it wouldn’t be that difficult to switch to another DAL.
A couple of months ago I spent quite a bit of time looking into Adapdev and it’s supporting tools Codus, a code generator and Zanebug a unit testing tool. It’s really a nice combination and allows you to quickly generate a DAL and immediately test it allowing you to quickly locate problems. The developer Sean McCormack has been very responsive to bugs and even quickly turned around a fix for a significant problem I had run into. Unfortunately, he has recently blogged about a slowdown in the development though I think it’s still well worth a look.
I don’t want to ramble on too long so I’ll wrap it up by saying that I’ve had some good success finding very useful DAL implementations though I have yet to find one that has really addressed all of my needs. If you’ve been doing similar work I’d be interested to know what’s worked for you.
I’ve moved all of the blog entries I’d posted to blogs.borland.com here and more or less closed down my Borland blog. If you’ve got links to old entries you’ll want to be sure and update them. Use the search box in the top right corner of this page or click Complete Archive in the left hand column. I’ll work to tag these old entries accordingly so they are easier to find.
After figuring out which blog engine to use the next step was to get it running locally. I’d never recommend trying to run your blog directly on your ISP before running locally where you’ve tested it out and your comfortable with it. If you struggle to get it running locally my guess is those problems will only multiple when you move it to your ISP. If you’re concerned about setting up and configuring a local SQL server on your machine that’s all the more reason to go with something like dasBlog which uses XML files.
DasBlog requires two things, the .NET framework and IIS. Microsoft’s $g(Cassini web server) isn’t really a great option because at runtime dasBlog adds full URLs for the stylesheet references and thus Cassini can’t supply them so your site renders without its theme. There is lot’s of information on $g(getting IIS installed) on the web so I won’t spend time covering that. Regarding the .NET framework you can use either 1.1 or 2.0 since both are supported although I’d recommend using ASP.NET 2.0.
Download and setup
The dasBlog download available from SourceForge comes in two flavors, with or without source. Since I don’t have plans, at least at this point, to dive into the source code I went for the “Web Files” link which contains only the necessary files for deployment. Once downloaded I unzipped the contents into a dasblog directory and checked out the readme which has detailed information about installation and a few necessary configuration file changes. If you’re using ASP.NET 2.0 there are a few changes you’ll need to make to the web.config file which are explained in the readme. Once everything was configured I fired up the browser, hit the URL and my new blog engine popped right up. Next time, I’ll talk about how I created the theme for my blog.
As you’ve probably already heard Borland announced it is creating a new wholly-owned subsidiary named CodeGear from the Developer Tools Group. The news comes approximately 10 months after the initial divestiture announcement and brings to an end lots of speculation about exactly what would happen to the Tools group.
Officially, I’m still on vacation and will return to work tomorrow (Nov 16th) morning and will start my first day on the job as a CodeGear employee. While I had no idea whether or not an announcement would be made while on vacation I had a sneaky suspicion after reading Borland had delayed its quarterly results. Having read that, I figured it was probably a 50-50 chance that the news would come out before I returned. For most of the past week I’ve been unplugged and only briefly checked my email throughout my trip on the lowly eMachines PC crammed in very the corner of the dining area off the hotel lobby. When I checked my work email and noticed a mandatory all hands meeting had been scheduled I quickly sent an email to Mark Edington asking “what happened” he replied simply “Call me”. I spoke with him as I was filling up our rental car the night before our flight home and he gave me the 60 second summary.
My first impression was relief that the wait was finally over. Periods of uncertainty like this are taxing whether you’re a customer or an employee and while I was never really stressed about the final outcome it was a regular lunch-time topic and frequently on my mind. I’m glad Tod Nielson joined Borland and not only recognized the difficult decisions that had to be made but forged ahead with those decisions when others seemingly couldn’t. I’m glad we have a new name. I’m encouraged by the number of new and returning employees we’ve hired over the past several months. I’ve met Ben Smith, CodeGear’s new CEO, and look forward to hearing more about his vision for the company.
Basically, I look forward to going to work in the morning.
In this post I mentioned my family will be travelling to visit my brother and his family who live in North Carolina. Well, we’re now in NC and I’ll be back posting and replying to comments late next week. For those who have left comments thanks very much I do read all of them.
Btw, the trip went well and the DVD player worked extrememly well. Happy Friday!
Since the advent of BDS the palette has been rather hotly debated item and Andreas Hausladen even went so far as to implement the old style palette for BDS. With the introduction of the new component palette in BDS there were some subtle and not so subtle changes to its behavior. One of the changes was the introduction of what’s referred to as “Palette Wizards”. Personally, I’m not a big fan of the feature largely because I feel it “overloads” the palette with toolbar like functionality and thus can be confusing. That said, there are ways to change this behavior and I’m not sure these settings are obvious. So, if you’d like some of the D7 style component palette consistency back you can set the following options:
- Select Tools|Options…
- Click Tool Palette in the treeview
- Under Features uncheck “Show Palette Wizards” and check Always Show Designer Items