Software: Project Management
I'm no longer blogging on this blog. Please find me here.
Those of you that know me and live in Milwaukee know that I'm in the process of starting a software firm. For this venture, IronWake, LLC, I have a great business partner, Pete Reynolds, who has been a colleague and friend over the years. I trust him. He is a great guy and has strengths in business that complement (there's that word again, Gerry) my skills. He is a good marketing guy, a good product manager and is focused on many aspects of this firm. I am squarely focused on building product and understanding the sales channel. I've been in a few startups and have seen that a lack of focus in sales, or in other key areas, means certain death. I'm not afraid of failing, but rather will focus on spending the time and energy necessary on the things that make a firm successful. It'll be interesting over the next few months as we ramp up and develop this firm. I'm looking forward to the day when we have a professional staff, i.e. a CEO/COO, a sales team of more than two people (no, not including Pete and I), a marketing team again of more than two people, customer support teams, development teams, etc.
So, Pete and I are at a fundamental crossroads. Do we raise capital in the form of angel monies, or do we bootstrap this operation? There are a number of key factors that we are considering in this process. Pete and I are unafraid to give away equity or do a deal involving some form of equity, debt or mezzanine financing, which may require us at some point to relinquish as much as 60% of the firm's equity over a few rounds of financing. No big deal if we are making dough throughout this whole process. Pete and I see eye to eye on all of these issues. We want to make cabbage and there are plenty of impediments between us and that goal without the two of us and our eventual partners tripping over each other and mucking up the process. It's all about FOCUS and SIMPLICITY.
I'll not get into the details of our software product at this time. I also want to be clear about my mention of IronWake on this blog. IronWake will likely be a bigger and bigger part of my life as time progresses. I'll mention it from time to time here, but I want to be clear. I'm interested in sharing my thoughts about this firm and the development from a professional developer/designer/architect perspective. If I market IronWake here, it is purely out of habit. If I talk about IronWake and IronWake products, it is because I feel that I've found something interesting to share with anyone who reads my junk here. OK, stare at this spot:
.
.
.
You are getting sleepy. BUY MY STUFF.
----
If you want to contact me, feel free to do so here. If you'd like to preorder an IronWake product, sorry, but you'll have to look elsewhere. I won't link it here.
Break out the Lederhosen and the funny hats. It's that time of year again. If you live in Milwaukee, the odds are that you have some German heritage. This weekend is German Fest at the Summerfest Grounds. Unlike TechEd, "I'll be There" for German Fest.
For all of the out-of-towners, the Summerfest Grounds are host to Summerfest, a massive music festival with about 350-400 bands playing over an 11-day period in late June, early July. The rest of the summer months at the Summerfest Grounds are allocated to different ethnicities and their appropriate festivals:
- Festa Italiana
- Irish Fest
- Asian Moon Festival
- German Fest
- Polish Fest
- African World Festival
- Mexican Fiesta
- Indian Summer
- Arab World Fest
- Pride Fest (not exactly an ethnicity, but its a festival)
- And many others . . .
Pretty much, these festivals are an excuse to drink significant quantities of beer (with the Miller Brewing guys headquarters in town; yeah that's right, we have the beer and Harley headquarters here), listen to lots of music, dress up in ethnic garb (if that's your thing) and have a good time on the shores of Lake Michigan. Rumor has it that the lower cased one has been to most of these. His favorite, and you can quote him on this: Pride Fest. He especially liked the parade where everyone noticed his "cop" outfit (he's on the far left, but don't let the makeup fool you). I think he even tried to arrest a few people at the end of the parade route when the TS wasn't looking. Luckily, most of these leather-clad men caught on when he flashed his "cop tool belt" (man, I'm gonna get it for that comment).
Seriously, I'm Welsh, Polish and a bit German, so I fit in at most of the festivals. But my favorite is German Fest. The food is a bit expensive, but outstanding German cuisine. My average German Fest weekend for cards, cigars (2-3 per day), beer (very little), soda (lots), food, souvenirs, parking, tickets, etc. is about $350. The main reason that I go this shindig is Sheepshead. For those of you that play this card game, the German Fest tournament is one of the biggest events on any national Sheepshead calendar.
The tournament is split into 29 one-hour sessions played 10-10-9 on Friday, Saturday and Sunday. Each one-hour session (last year was $2/hour) consists of 15 games of Sheepshead where it is Called Ace-Leasters rules (yup, that is 435 hands of cards over three days for those of you that can multiply). Standard 1-2-3 double on the bump scoring is used. The top player of all tables by points for the hour wins the hourly prize, a trophy and gets their picture on the high scores board. The hourly winners names are entered into the grand prize drawing on Sunday night. TVs and other big prizes have been given away at this event. So, yes, I do have a few hourly trophies from past years. Bragging rights for tournament hourly high score are always on the line . . .
If you are within a few hundred miles of Milwaukee this weekend, stop by for this festival. If cards are your thing, hit the Sheepshead tent just inside of the main gate. You can spot me on Saturday and Sunday (alas, this is the first year in eight that I'll miss my Friday session due to heavy deadlines at work). I'll be the guy stinking up the joint with cigars and wearing a dark heather grey Loden Hüte (or Loden Huete; traditional Bavarian Alpine hat) with forest green piping and a brown feather. Trust me, I'm likely to be one of the only ones foolish stupid idiotic fashionable enough to wear one of these things on a hot summer day.
-------
As usual, feel free to contact me here if you are Welsh, German or a big old Pollock (I'm part Polish) or are a Sheepshead player that doesn't mauer. If you require more pictures of the lower cased one in his Pride Fest "gear", I can't help you.
I can't sleep. I'm still very sick and I'm angry and frustrated that the body sometimes just doesn't know how to recover. See my article on Self-Nonself for my thoughts on this topic. I expect more from my immune system, but it doesn't always accommodate.
Since I can't sleep, my brain is at least at 5% utilization. I've been thinking about quality a lot lately. In private email correspondence with Sean, I reiterated a simple position that I have on TDD and other methodologies that improve quality. So for the record, for those that don't know, I'm not anti-TDD. Sean and others that I know are aware that I think about axiomatic semantics and Hoare Logic and the Curry-Howard Correspondence and many other issues. I'm a fan of Intentional Software. They focus on "intent". I have enjoyed this viewpoint far in advance of any of the current MDA/Software Factories/Language Oriented Programming topics that have surfaced in the last 18 or so months. I'm a fan because Charles Simonyi is a sensible guy and thinks about these problems. Also, any firm that is in the business of software engineering and has BOTH the universal quantifier and the existential quantifier in the company name must be cool. There are other firms that also think about these sorts of problems. Ask the question "What did I intend to do here?" when constructing software and you are forced to decompose a fairly difficult problem. What language do I use to describe this intent? Is this language nothing more than part of the original language of the software construct? blah blah blah. The answers are difficult, but the process is to focus on quality.
I'm in the process of learning Sean's Zanebug and I just grabbed the latest copy 1.5 from here. Sean made Scott Hanselman's 2005 Ultimate Developer and Power Users Tool List with Zanebug and I know that he is working on further improvements. Sean strikes me as the type of developer that has his focus on quality.
That is exactly my point. Take a moment the next time that you are at work. Look at those that you work with in the professional development of software. From where I sit, nearly everyone has an eye on quality. The chief architect at my current client is constantly taking the time to assess what is best for his firm. He thinks not just about the functionality or the features or the cost, but about the quality. Quality can be measured in many ways. An easy way to think about quality is to state it as a simple optimization problem: Quality is the process that is applied to a discipline to minimize the number of defects. While defects manifest themselves in many different ways, they usually are apparent in software systems. Improvements in quality, i.e. the reduction of defects, can occur proactively and reactively.
Think about crash test dummies (CTDs) and their utility function. Sometime ago, I went to Disney World and rode on GM's ride at Epcot where you go through a simulation of GM's test center. As part of the ride, the car that you are placed in is accelerated towards a wall that opens to an outside test track at the very last moment. Talk about feeling like a crash test dummy (some would argue that I am a crash test dummy and would further argue that you could avoid the use of the terms crash and test in my instance).
So when testing for safety, the CTDs are placed in vehicles. Some catastrophic event is then perpetrated on the vehicle and the entire event is recorded. The event and all activities around the event and the results of the event on the CTDs are observed and analyzed. The vehicles are accelerated and smashed into walls. Side impact tests are done. I'll assume that a number of other tests are done. All of these tests are done in a safety lab by guys wearing white lab coats and safety goggles and pocket protectors (or so I'm lead to believe). They study the effects of engineering on the CTDs. Safety is the primary objective.
So now go back to the point that I made earlier about quality and software. Hanselman's list is a classic example of tools that are available to the .Net practitioner. We don't have to wear white lab coats (unless you have a habit of doing this) or go to a testing facility to test our vehicles. Any old PC with some good old fashioned development tools will do. We can build, test, observe, refactor, test, observe and so on. The cost associated with this practice is our time, much as the cost in the CTD labs is time. Only our PCs don't get smashed up when we test. I can improve the quality of the software that I develop. I can improve the safety of that software in its deployment environment. I can use tools to test and observe.
Software engineering gets a bad reputation for a number of reasons. People observe bad software and make the generalization that if that one piece of software is bad, then all software is bad. Y2K was not a major catastrophe because people took the time to construct reasonable software. Those that didn't have reasonable software took the time to repair any deficiencies for this problem. Software is all around us and in use in our daily lives more than we care to admit. It will become integrated to a further degree in our lives as we are able to improve the functions and features of software. So having tools around us that improve the quality of what is being built is a very good thing. That we can observe a build process and run tests on that process in an automated fashion is useful. To allow for continuous integrated builds is even more helpful in many software engineering environments. Software Factories are moving towards automation that will further our abilities to automate both the construction of the software and the measurements and metrics on that software, where quality is one of those metrics. While the models for risk, qualitative or quantitative, in software are not as sophisticated as in other disciplines, e.g. finance, time will allow for these concepts to improve the software product.
So when you approach your job today and think about the software that must be constructed and the role that you play to construct that software, whether it be architect, designer, developer, tester, documenter, etc., step back and appreciate the tools that you have at your disposal. Think about life without those tools. Think about tools that could be as well. We work in a discipline that allows for nearly immediate feedback in observations of our efforts from the comfort of our desks. We don't have to go to a lab and wreck some cars. It is only on some days that I feel like wrecking my servers . . .
Comments are inoperative. I invite you to contact me here.
I like to read and Summer is one of my favorite reading seasons. Like the lower cased one, I try and keep the queue full (those are my copies of Goldberg, Holland and Koza in the foreground), i.e. have at my disposal materials that I need to read. I mentioned earlier here that I have a few books to read.
I've completed Aspects on the Theory of Syntax by Chomsky. I'll not be doing a review of this as I believe that I need at least two more thorough re-reads of this book to understand this material. David mentioned here that my posts loosen the brain muscles (his posts are verbose and loosen my brain as well). Chomsky, among others, loosens my brain muscles in many disciplines.
I've completed my read of Brameier's On Linear Genetic Programming (abstract here). While this is a considerable piece of work, if you are in the field of AI and specifically interested in GP (and have a reasonable level of competence in these disciplines), I'd recommend a read of this paper.
I still have my head wrapped around the proverbial pole with Experimentation in Mathematics by Borwein, Bailey and Girgensohn. I've decided that I have two choices on this book: either read and become engulfed, or read at a quicker pace and expect to do a re-read in the future. I'll likely choose the latter as this book covers a great deal.
So for those that are interested in what I'm thinking, here's a partial view of my Summer Reading List:
Full Re-reads (books that require that I re-read them cover-to-cover)
- Adaptation in Natural and Artificial Systems - John Holland. My recent correspondence with Dr. Goldberg has made this re-read a must. Given recent publications, I need to refine my understanding of the building-block hypothesis and review the mathematics. I am and have always been a true believer of the BBH, but it never hurts to do the math .
- Introduction to Mathematical Logic - Alonzo Church. I'm getting my butt kicked in this subject all of the time. I must improve myself in this discipline. The best place is a full re-read of the foundations here. Church students included Martin Davis, Leon Henkin, John Kemeny, Stephen Kleene, Michael Rabin, Hartley Rogers, Jr., John Rosser, Dana Scott, Raymond Smullyan and Alan Turing. The only other guy in modern times who has had a list of such public and well respected students in fields that I study is Manuel Blum.
- First-Order Logic - Raymond Smullyan. This book cost $7.95 and is worth every penny. This book is one of those "best things in life" that are almost free. My copy has held up well over the years.
- Secrets and Lies - Bruce Schneier. This book requires a re-read every 18 months so that anything on my security compass that is "out of whack" can be properly aligned.
- Gödel's Proof - Nagel and Newman. This really belongs on my Leisure Reading list because I always enjoy this one. There are few better ways to spend a quiet summer afternoon outside or at the park than with this one. I can think of others, but discretion prohibits my discussion here.
- On Intelligence - Jeff Hawkins (with Sandra Blakeslee). For my first read of this book last year, I had a very closed mind on the topic and did not really give benefit to what the author discussed in the material. I promise to be better on this topic and have a more open mind this time around.
Partial Re-reads (books that have content that requires that I re-read selected chapters or sections)
- Active Portfolio Management - Grinold & Kahn. Chapters 5, 10-15. I'm reviewing second-order instruments (derivatives) and the insufficiencies of the G&K model.
- Theory of Games and Economic Behavior - Von Neumann and Morgenstern. Chapter 1 section 4, chapter 3, chapter 9, chapter 11.
- The World's Major Languages - Edited by Bernard Comrie. Chapters 1, 9, 11, 12, 14,15, 16, 24, 26, 30, 32, 33, 34. My understanding of this re-read will dictate my views on a number of topics in Linguistics in the coming years.
- Valuation - Copeland, Koller, Murrin. Chapters 8, 9, 13, 14, 15. One of the seminal books on valuation in capital markets. This book doesn't have my desired "quant-ness" (it is quantitative in nature, but is simple in the mathematics and approach), but it is has comprehensive viewpoints on many topics.
- Physics for Game Developers - Bourg. Chapters 3-6, 11, 13. Chapter 11 has a reference to Euler's Method. Anyone who writes about Big Leo always gets some of my time.
- Doyle Brunson's Super System - Doyle "Texas Dolly" Brunson. Poker. 'nuf said. By the way, his (and his co-authors') math is horrid, but they still make serious cabbage.
- Options, Futures and Other Derivative Securities (2nd edition) - John Hull. Chapters 2, 3, 6, 8, 14, 15, 17. I know that I need to get the latest edition of this book, but this is my first copy and I'm sentimental. Math + Finance = Fun.
New Books
- The Design of Innovation - David E. Goldberg. I have high expectations for this book. I am a Goldberg fan for the simple reason that Dr. Goldberg has extraordinary depth in topics that he discusses. Somehow he distills his message, makes the topic comprehensible and makes his point without losing any information. As a side note, my daughter "The Liz" and I were out the other day for a bite to eat. I had mentioned that I had emailed Dr. Goldberg and had received a response. Her reply was "Isn't there a wrestler named Goldberg?" You have got to love the kid.
- MDA Distilled - Mellor, Scott, Uhl, Weise. I'm pro-Software Factories, but I'm not anti-MDA. I've read some of this book so it isn't new to me, but I haven't given it the proper reading it deserves. I'll be getting the Software Factories book shortly.
- Software Factories - Jack Greenfield, et.al. The seminal book on how to make software in today's environments.
- About Face 2.0 - Cooper and Reimann. The user experience is essential to the acceptance of any software application. I'm not a UI/UE guy, but it is still essential to have a proper foundation.
- Reversing - Eilam. A book that has been sitting idle in my house for awhile now. It keeps calling out to me. I know that the dark-side in me cannot resist.
- Induction - Holland, Holyoake, Nisbett and Thagard. This book is my Achille's Heel. Try as I may, I cannot manage to consume this book. This will be my third retry (not re-read). The material is dense and not pleasing. Maybe I should pull this from the Summer List, because I only want fun books.
- Emergence - Steven Johnson. Since this is how I spend much of my time, i.e. studying emergence, I suppose that I should get another point of view.
- A Semantic Web Primer - Antoniou and van Harmelen. See below.
- The Semantic Web - Daconta, Obrst and Smith. See below.
- Explorer's Guide to the Semantic Web - Thomas B. Passin. I am a believer in the principles of The Semantic Web. As a practitioner of EC, I'm concerned that this current design iteration will be insufficient to meet the goals. I hope to get a more comprehensive understanding from these three books. Note: As I don't normally blow my own scratch on books of this nature, the lower cased one was kind enough to lend me his copies.
Leisure Reading (the math books are re-reads; wait, they are all math books)
- Men of Mathematics - Eric Temple Bell.
- History of Mathematics Volume II - D.E. Smith
- The Man Who Loved Only Numbers By Paul Hoffman
- Crypto - Steven Levy. I have never read this book and will now finally take the time to do so.
There are other books that I must read as well. I need some non-math stuff for my leisure list. I'm light on Number Theory and Statistics this summer. I'll be picking up selected readings in these topics. I'm also light in compsci this summer. I'm of the opinion that I'll not likely have time to chase some Theory of Computation, Computational Complexity and Automata stuff that I've been meaning to read. I haven't had a chance to prepare a comprehensive list, but I'll be studying pi-calculus, stochastic pi-calculus and join-calculus and looking for other process calculi as well. Petri nets and other systems such as Linda are also on topic. These are necessary for the foundations of Web Services and SO, whether it be SOA or SOD or any service orientation and beyond.
Dr. Goldberg mentions here that computer science and computer engineering are lumped under the same term "science". I think about the science and I apply the science and I think about how I build software. But he has given me a spark on this issue. While I espouse software engineering in a number of forms, I tend to patronize the engineering aspect in favor of the science. I'm saving time for readings in my discovery (re-discovery) on this issue. Dr. Goldberg's thoughts are always insightful and he is careful with his use of the terms descriptive and prescriptive. This is another reason to continue to be a good student of those that lead. My only books that come close on this topic are MDA Distilled and Software Factories.
In closing, I have to say "look ma, no physics (ok physics, but not the real kind and it involves games)".
I've been linked twice now by Jason Haley. I don't know Mr. Haley, but I'm subscribed. He regularly posts what he finds in his "interesting finds". I really enjoy looking through things here. It's great to find people that discover things and share them in a rummage sale manner (I hate rummage sales, but I like this). It is easier to filter through Mr. Haley's posts than it would be for me to find many of the nuggets of knowledge that he finds. This is truly a nice source of information for the .Net practitioner. Graph Theory guys and gals will recognize what Mr. Haley is doing. So speaking of graphs, adding edges and vertex cover problems, let's do some math.
Let G = (V, E). Just kidding, let's not do some math. Let's just say that this is good stuff. As an alternative to vocabulary based search (google), this information narrows considerably the scope and provides for discovery of technical things that I didn't know that I didn't know. Thanks for the time saver.
So ALL of my friends (yup, all one of them) that have an online presence or care to read these ugly ramblings have asked the same question: JJBResearch? And .org? What’s up with that scalper?
For the record, JJB Research is not:
- Ju-Ju Bean Research
- Jar Jar Binks Research
Other comments had included why do a .org instead of a .com? I can honestly say that jjbresearch.org and jjbr.org both represent what they intend to represent: An organization that does research. JJB is significant; it’s just not ATB .
JJBR researchers Boris, ivan and bigH all are up. Most of the research at JJBR is NONPUBLIC, but these guys should talk a bit in PUBLIC about some of the stuff that we address daily. I've got other team members that don't want exposure, so we'll refer to them as the termites and try to coax them out into the open eventually.
FYI, Boris hangs out in Crypto theoryland usually in the midst of extremely loud music (good thing you don't live in town). Ivan's the disorganization specialist. Ivan's work in GP goes hand in hand with mine. Add entropy, mix and model. More degrees, more dimensions, etc. bigH is one of the LINGO boys. He fancies Foundation Ontology, where I constantly remind him to skip that silliness and move to real ontology in natural language synthesis and computer science. (Look ma, no physicis