ben robison
when only more words will do
Is Model Driven Architecture Right For Me?
Is represents Part 2 in the MDA series. In part one we talked about what exactly MDA is and what it can do. In this section, I wanted to talk a little bit more about how if fits in different places. This isn’t meant to be a comprehensive source of information (it’s just a blog), but I would like to discuss some of the things I would look at before making the MDA leap.
How much software development does your firm do? Not all technology firms are involved in software development, and if yours is one of the ones that doesn’t do some hardcore development, MDA is probably not your thing.
For development firms, there are major benefits to be realized under certain circumstances. Richard Blais from Locus Systems Inc. believes that
…software development is not necessarily an art form. It requires discipline, it requires a process…
He talks about the benefits of using OptimalJ in a short video clip. I think it does a good job of illustrating benefits for large development companies. Some of the highlights are:
- Solid code generation, good process within the code
- Reuse of code & effort (4-5 of 10 things that have to be done for new applications are already done)
- Shortened SDLC (55% decrease in time to market)
- Empowers software architects and programmers
- One source of a competitive advantage
- 44% revenue growth powered by OptimalJ
What if you’re not running a big development firm, but you’re still in the ball game somewhere. MDA could be a good fit for your business, but it might not be. How do you know? Maybe it’s a good fit for certain projects and not for others.
Let’s take my hypothetical web development business that helps local businesses get themselves up on the web. Some of them would want to actually sell products online, but others just want to start a web presence. Some want to handle online scheduling and others just want their information available. Is MDA a good fit?
These are some of the things I would look at to decide if MDA is a good fit for my little projects.
Complexity: If the business is very complex, or particularly when the data model is complex, MDA begins to become a stronger candidate. In my mind, MDA can really shine through when you’ve got complex rules on top of complex data structures. Even if you’re only using it for the first round implementation, a lot of the complexity can be reduced by an MDA product.
Size: Again, the bigger the project, the more potential that MDA can knock out a significant amount of the work up front.
Flexibility: This is closely related to the next point, but if there is a lot of flexibility required, perhaps MDA is not the greatest candidate.
Ambiguity: If the requirements are ambiguous or the client is figuring things out as you go along. MDA won’t be much help here. Without a fairly completed definition up front, generating code from a model becomes problematic and difficult. If you run into this problem very often, you might have a little business problem in your own business besides a difficult client relationship to manage.
Time line: I suppose this is related to the first two points as well, but on a tight time line, an MDA product of one sort or another can really help you front load the project and more complex routines taken care of at the beginning. If you use MDA often and consistently, you might find yourself in the enviable position of Locus and have several components of code that you can reuse from project to project. That doesn’t mean that MDA is the only (or even the best) way to reuse code, but the required levels of formality and process make it a much greater likelihood.
Existing code base: If you’ve got an existing code base, in my mind I would tend to swing away from MDA. Partially (or poorly) implemented projects tend to have less documentation and formality. In my experience, that doesn’t give you enough information up front to go the MDA route.
I think I’ll wrap up tonight’s post at this point. In the last and final installment in my MDA series, we’ll take a look at OptimalJ more in depth to see some of the specific benefits it (and MDA in general) can offer.
HowTo: Lift Your Browsing Restrictions
SSH + Socks + (Firefox + FoxyProxy) = Browsing Freedom
Although tunnel through them would be a more accurate description. I hesitate whether to post this or not, but the little wanna-be-hacker inside me is making me do it. If you find your browsing is constrained by filters, proxies, or any other kind of unwanted restraints and you’ve got a spare offsite SSH Server, there is a solution to all your problems.
The information is not new at all, nor is it complicated, it’s simply combining technologies that most geeks already know about to achieve a result that makes me grin. Take this information for what it’s worth.
SSH is the popular Secure SHell program. Socks is a kind of internet proxy that uses an SSH connection as a proxy. FoxyProxy is a firefox extension that enables proxies on a per site basis.
That’s all I’m going to say.
RAID Options for Mac OS X
If you’re anything like me, you often daydream of the wonderful computer setup you’d like to have someday if you can ever afford it. All those computers & gadgets, working flawlessly together in absolute technological bliss.
Well, as I near graduation, my probably false perception, is that those dreams are a little closer. The first two items on that imaginary shopping list is some kind of RAID storage solution and some kind of device that plays all my content on my TV (and since my TV is old, analog, crt, and several hundred pounds, I better throw in a new one of those as well).
Plasma vs. LCD, AppleTV vs. Netgear’s Digital Entertainer vs. the upcoming SlingCatcher are debates that can wait. I’d like to express my dilemma regarding the various RAID options I’ve investigated.
Hardware vs. Software
For me, the obvious option is hardware RAID. For one, it’s faster. I’m a firm believer that if something can be handled at the hardware level, it can be done quicker and with less overhead than a similar function implemented as a software solution (assuming the respective developers know what they’re doing). I’ve read claims of software RAID solutions that are just as fast or faster than hardware solutions, but in my eyes, it simply doesn’t hold water.
Another reason is it’s movable (I was going to say mobile, but that just doesn’t fit). There’s only one Mac in my life at the moment, but I hope to see that number increase in the future. That being said, I still have Windows & Linux machines in my apartment. The idea of all my data being tied to a specific OS makes me shudder. Hardware solutions can be moved.
Internal vs. External
Given the choice, I’d like to stay internal, but I can be flexible on this. My computer space has enough cables and external enclosures lying around that one more little enclosure of some kind wouldn’t be too much of a hassle.
Windows vs. Linux vs. Mac
Awhile ago, I specced a system for my father-in-law, building my own server from the ground up. I think I’ve learned a little since then, but the price for the pimped out almost 1TB RAID server (4 x 320 G drives & a 3Ware controller) was $2700. If I put Windows on it, then you can add the cost of Vista or Windows Server. So for cost of OS purposes, we’ll just round up to an even $3k.
What about the Linux option? That would keep the price at around $2.7k, but I’ve looked into a few different distros and I can’t say with any amount of confidence that I could even find a distro that could support the RAID controller. If you’re not doing software RAID on your Linux machine, it’s a complete tossup if you can get drivers to support your setup.
What about the Mac possibilities? Not encouraging. Until recently, the only solution I could find that I would call even close to reliable was the XServe RAID. If you’re thinking of going that route, your looking at $6k on the low-end, plus whatever you plan on plugging it into (XServe starts at $3k, Mac Pro starts at $2.5k). Don’t get me wrong, I’d love to have a gleaming XServe sitting just above my XServe RAID in a rack in the closet, but it seems a bit expensive.
Enter the 3Ware Sidecar. It’s external and still expensive, but it does have style and it’s coming much closer to the affordable mark. It retails for $1295 which does not include the cost of the SATA II drives you can put in it. 4 x 320 G drives in a RAID 5 array gives you close to 1TB of space tagging on another $360. The price includes the cost of the actual PCI-E hardware controller, but does not include the required G5 or Mac Pro. Again, the low-end Mac Pro tags another $2.5k, so we’re now looking at just over $4.5k for your Mac Solution.
So do the benefits of having a Mac Pro in your house outweigh the extra $1500? I know a lot of people who would say yes. Depending on the amount of my disposable income, I might be inclined to agree with them. There’s a lot you can do with that kind of power. Maybe the perfect solution would be to get the guys over at 3Ware to market the card separate from the SideCar, then you could just toss the drives into your Mac Pro and save all the extra cost of the enclosure and the required cabling.
*** Update: I dug a little further and discovered that the 3ware sidecar is also compatible with the Powermac G5. Those are selling on eBay in the $700-800 range. That would bring the Mac solution down into the $2.5k range making it the cheapest hardware option.
However, I then had to ask if a Powermac G5 would really be getting the benefits of hardware RAID and I think the obvious answer is no. Which begged the next question: if nearly every hit on this so-called media server is happening over a network through SMB or NFS, would any machine really see the speed benefits of hardware RAID? Again, the obvious answer is no.
Now the most important question of all: if you’re not going to see the speed benefit, is forking over all that extra cash really worth the benefit of having mobility? I’m not sure it is, which suddenly makes software RAID a viable option. Macs can do software RAID out of the box. For the cost of a Powermac G5 + Sidecar, I could buy a Mac Pro!
*** Update 2: After looking into transfer speeds of network file sharing protocols (9-30 MB/s for Samba and NFS) and the RAID speeds available in hardware RAID (600-700 MB/s for 3ware 9650), my arguments for speed are likely useless anyway.
Campaign Tracking in SiteCatalyst
At the risk of this blog starting to sound like an advertisement for SiteCatalyst, that is not my intention, I’m just continually surprised by the amount of control you can exercise over your data. There are so many different ways to combine your data so you can view it from every angle.
I just barely finished reading sections of Omniture’s Implementation Manual and the Omniture Advanced User Training documents. Today’s tidbit deals with tracking campaigns.
Omniture’s code includes a variable for a campaign. When this variable is populated, it persists as a visit continues until a visitor completes a success event (a purchase, a registration, a download, etc.) that the site owner has defined. If you own a commerce site, you can use different codes to track pay-per-click campaigns, affiliate referrals, email click-throughs, and any other number of marketing efforts.
You can view the reports for these in the commerce section of a report suite by running the Tracking Codes report. This will show you your different tracking codes and their relative success rates (again, how you measure success is completely customizable by you). Not enough detail you say? Well there’s more.
Let’s say you want data about more than just a single tracking code. Let’s say you run a marketing campaign that consists of emails, banner ads, affiliate links, and AdWords bids. SiteCatalyst allows you to classify all the different tracking codes into Campaigns and report on those as well. I can’t say enough about the value of this type of information. To borrow a term from a recent visitor to our web analytics class, running an online business without this information is the equivalent of flying blind.
Why Folks Read Blogs
None of this is original, I just uncovered this article in the archives of the internet. It answers the question I’ve been pondering for awhile, and it also cautions against something I’ve been thinking of doing lately (no I’m not a CEO).
The bottom line is this. If you’re a blogger and you expect people to read your blog, you must have 4 of the following 5 things:
- Candor
- Urgency
- Timeliness
- Pithiness
- Controversy
I had to look up pithiness and this blog definitely doesn’t have that. To that Seth adds a 6th, for the sake of having a 6th. Utility.
I’ll add Familiarity as #7 on the list. If you’ve got some kind of personal connection to the blogger, that’ll keep you coming back. I assume that’s why most of you read my blog right?
Subscribe to RSS