![]() |
|
Spaces home Max Guernsey, IIIProfileFriendsBlogMore ![]() | ![]() |
|
|
May 07 Almost but not QuiteSo, I took a stab at some of this "short short" fiction. It's not so much like designing a single class. I think that, maybe, a single paragraph is akin to a class. It seems like "short short" fiction is more like one of those "write a game under 5k" contests. April 29 Good writing is good designI like to think that I am a decent writer. Many who know me find my fiction to be... uncomfortable. That's okay. The alternative would be for my friends and family to be totally unaffected by my writing - that would be much worse, in my opinion. Recently I was considering writing a piece of “flash fiction” to enter a few contests... sort of a first step on the long journey of trying to get a novel published. The limit for a lot of them is five-hundred words (about two pages). That got me thinking: "how am I going to tell a story in so few words?" After a while, the process came to me. As I went through the steps of building a micro-story, I had a mini-epiphany. Writing a story is just like designing a system of classes. Software, after all, is the export of concepts using language and so is a good story. I have to partially credit my brother and a discussion of the number line for this, too. While we were talking, it really got me thinking about ideas and how they fit together. Take the concept of numbers and of pseudo-numbers (such as i or infinity). Numbers fit together in a prescribed set of ways. Pseudo-numbers can stand in for a real number at certain times but not at others. That strikes me as the same thing as objects which implement many interfaces. All of these little ideas can be stuck into expressions, so they all fit the Expression interface. The ones that can be added together or multiplied (real numbers, i, and the like) all fit the BasicArithmeticElement interface. You probably get the idea. So, if this is true, then writing a short story might be akin to a subsystem. It’s part of a bigger story. You need to leave hooks to the “outside world…” things which entice the reader’s imagination into action. Following that line of reasoning, flash-fiction might be like a single class; or, perhaps, a small number of related ones. You focus in on a few powerful ideas and explore them in-depth, defining only the interfaces of notions which lie outside the scope of your story. I’m going to give you a shot and we’ll see how it goes. April 17 Review of Emergent DesignI just finished Emergent Design. It is an awesome tour of everything it takes to become a professional software developer. I believe this book to be distinguished from other technical books in the way that great works of fiction are different from genre books. It defines a category rather than just being a part of one.
It is a call to arms for all of us who consider ourselves professionals to band together into a true profession. Simultaneously, it is a tour of all those things that we as a proto-profession have identified as important and valuable. Practices, patterns, principles, disciplines, tools... Bain shows how all of these things work together. He goes one step further, though: he shows how they can coalesce into the basis for our occupation's transcendence into a profession.
If you have not been introduced to these concepts – if you work in a heavily waterfall environment with brittle code and death-marches at the end of long release cycles – this book is your way out. Read it. The most you will have lost is the time it takes you to read a three hundred page book and you have everything to gain. Emergent Design will show you that there is a better way. A way to make software that gets easier to maintain over time, not the other way around.
If you are familiar with these concepts, as I believed myself to be, then you will enjoy seeing everything come together in one book. You will probably gain some valuable insights along the way. I certainly did. You will also find that it is powerful recommended reading for those around you. Scott Bain's writing is clear, concise, friendly, funny... oh yeah: and very persuasive. Having read this book will give you and those whom you coach, teach, or work-with a common frame of reference; even more-so than Design Patterns.
I truly believe that this book is going to be at the center of a series of discussions, debates, and decisions which will ultimately lead to the formalization of software development as a real profession. It would be easy to characterize your choice as “buy it or don’t buy it” but that would not be accurate. The real choice before you is this one:
You can either be an informed participant in the formation of our profession or you can just be governed by it.
I trust you to do the math from there. March 31 SPOILER ALERT: 10,000 b.c. (it was good)I really liked it. I'm sure a lot of people did not. I also bet most of the people who watched it just thought it was some adventure movie.
There clearly was more to it than that...
I think it was about the Big Event to which all the great monuments (the mounds, Angkor Wat, temples near the Pyramids at Giza, et cetera). Either there was an amazing coincidence, or the makers of this movie really did their research. Watch it and look for the details. If you've studied this subject, I think you'll enjoy this movie. March 29 Oh yeah......and, if you are listening, Microsoft, can you PLEASE add a throwable interface (or something like it) so that we don't have to couple to inflexible taxonomies of exceptions?
...and one more thing... can you PLEASE make exceptions a lot faster. I don't have any trouble with the time they take to throw but some people do and it is difficult to get them to use exceptions properly because they cannot see past the (admittedly irrelevant) cost. Better Generics, pleaseGenerics were a major step forward in C#. Moving from C++ to C# (or Java) represents a shift to some great things; garbage collection and a rich, standardized set of tools are just two of those good things. However, C# 1.0 (and 1.1) was significantly less expressive than C++. Generics moved us back in the right direction. I would argue that C# is more or less as expressive ad C++ at this point.
Now we can take it one step further: let's make C# better than C++. Let us lift the constraint of not being able to inherit from a type argument.
Why? One answer: encapsulation. Imagine the power of being able to encapsulate a class from its superclass. Coupling only to its behavior and the portion of its interface that your implementation needs.
Here is an example of the sample that I would like to compile.
// In Contract assembly
public interface BaseInterface
{
string GetSomeString();
}
// In Implementation assembly
internal class BaseClass : protected BaseInterface
{
protected string GetSomeString() { return "Foo"; }
}
// In Consumer assembly
public class SubClass<T> : T where T : BaseInterface
{
public void OutputSomeString()
{
string someString = GetSomeString();
Console.WriteLin(someString);
}
}
// end
...of course, I wouldn't use it for that kind of thing. That's a dumb example that was meant to express the behavior I want from the compiler as simply as possible. The things which are not already handled by C# (to my limited knowledge) are in bold:
1. The ability to implement an interface in a way that is not publicly exposed
2. The ability to inherit from a class which implements an interface in a way that is visible to the inheritor
Time was, I would implement Template Method by inheritance but no more. At this point, I don't even do Union with inheritance, very often. Even though we understand, now, that composition is the means by which we should combine functionality, there are still cases for this. The reason I want it is so that I can publish a set of base classes without allowing inheritors to couple to a concrete type. That, in and of itself, I think is the real case for inheriting from a type-parameter: the ability to break the coupling from a subclass to a superclass. March 28 Rethinking Agility in Databases, Part V: CollaborationI just finished another article in my Rethinking Agility in Databases series...
Check it out and let me know what you think. "Refactoring Data" Seminar (March 25th, 2008) ResultsWell, I would characterize my March 25th, 2008 seminar as a success in that I was not laughed out of the building.
It was tough, though. Trying to do the right amount of preparation. I made a lot of rookie mistakes. For instance, I apparently apologized way too many times (sorry about that). Worse, I cut one of the attendees off in the middle of his question (you know who you are). Hopefully, I won't be doing those things again.
I should be putting on another one in about a month (toward the end of April) and I am looking for a venue I can use in Seattle to deliver this seminar.
If you have a presentation-enabled room (one with a projector) on the left-side of Lake Washington and want to hear a seminar on enabling changing designs in data, please let me know via email. March 12 Dodged a bulletThis is sort of a meta-cat post.
One of my cats did something that really pissed me off, yesterday. I was so angry, I fired up Spaces and started to write a blog entry about it. As the mouse was hovering over the "Publish entry" button, I suddenly realized: I'm about to post something on the internet about my cat.
I closed the window immediately but I'm still a little shaken. I almost was one of those people. What would have happened if I'd clicked "publish?" Would I have transformed into a 350lb woman who works at the library? March 11 Google wants me to do what to myself?Right in the ass, too.
Google raised my minimum bids to $10. There does not appear to be any way to remedy the situation - except, of course, to figure out how to get a high CTR, then pay $10/click for a while.
I could see the prices going up, too, - so it was not a total surprise - but there was no guidance. The only advice they had was "improve quality" - which is super-helpful.
The best part is: I would gladly have paid a consultant good money to have crafted my campaign for me, if google had offered such a service. Now that I finally know enough to hire one and know who to hire, I'm screwed: the account is so badly broken that there appears to be no way to fix it.
Way to make it easy for the small businessman, Google. Imagination Land, Im-aa-aaaa-aa-aaa-aa-gi-naaa-a-tion Land...the movie.
I'm curious as to what they might have added to make it worth buying instead of just buying the DVDs for the whole season when they are released. March 08 Rethinking Agility in Databases, Part IV: ChangeI've written an article about embracing change in databases. It is part IV of my rethinking agility in databases series of articles.
Give it a look and tell me what you think. March 04 URL RedirectingOn Code Project, Mike Ellison, has written a great exploration of the Url Mapping module in the MVC framework. February 29 Refactoring Data Seminar: March 25th, 2008I will be giving a free seminar on bringing Agility to the database world by enabling true refactoring on March 25th, 2008. It takes place in Bellevue, WA and the venue was made available to us by Net Objectives. Rethinking Agility in Databases, Part III: TestingIt is part of Hexagon Software LLC's Rethinking Agility in Databases series of articles.
Take a look and tell me what you think. February 28 Rethinking Agility in Databases, Part II: Builds & DeploymentI've written an article discussing reliable builds and deployment in the agile database world. It is part of our Rethinking in Databases Agility series of articles. Give it a look and tell me what you think. February 23 Rethinking Agility in Databases, Part I: EvolutionI've written an article discussing how evolution applies to databases on Hexagon Software's website. This is part of a new series of articles about changing how we think about agile database development.
Give it a look and tell me what you think.
-- Max January 22 And the Oscars officially mean:...nothing!
Amy Adams gets the shaft for what was, obviously, the most amazing performance of the year.
Ellen Page gets a nomination for her robotic performance as Juno.
The Acadamy Awards' credibility was already hanging by a thread. January 18 DataConstructorSo I've been working on a product for the last couple months. It's called DataConstructor. It makes agile database development possible. Actually, it makes agile any-kind-of-data development possible.
Check it out. There's a free thirty-day trial, so you really have nothing to lose. |
|
|