Having just been to a conference, I saw a lot of different presentations, and saw a few things that [a] I hope I don't do when I'm presenting, and [b] definitely didn't help the speaker's cause. The biggest one was the number of speakers who kept turning back to look at there slides on the big screen. Not just a little peek to make sure they were in the right spot and get their bearings. I mean a full on reading of the slide with their back to us. Well, not reading - I don't think anybody pulled that old stunt. But looking at their talking points and keeping their back to us for the most part. Definitely not a very positive experience - at least some of them had content that made it possible to overlook this, but...
The other problem, one guy (won't mention any names) had his slides on a timer, so he could walk around. The problem was, his time interval was set too short, and he constantly had to go to his computer an re-adjust. If you want to walk around (and I think that's a great thing - I need to figure out how to do it), get one of those wireless remote things to control your slides.
On the positive side, several of the speakers were very obviously letting their true selves show, and it made the presentation much better. I don't know how they were able to be so relaxed, other than experience, which I'm sure was the case, but they were joking around, even poking fun at themselves, and just generally very engaging. I know its a hard skill to acquire - I am certain I'm not there yet, but its worth the practice, because these guys came across as real pros.
So, in the end, Dr. Dobb's Architecture & Design World was a worthwhile way to spend 4 days. Well, 3 and a half, anyway - we left after lunch on Thursday, because our flight was extremely late and we wouldn't have gotten home until long after midnight (Jim longer - he lives much further from the airport) and we found that there were seats on the 3 o'clock flight. The talks for the final session looked bad - we couldn't find anything that interested us, and the next to last session had one talk that we thought might have been decent, but given the recent sales pitch we had just experienced, we thought that a talk about scaling out databases by a guy who works for Sybase had too high of a risk of being another sales pitch. I'm not saying it was - we didn't have any slides to refer to - they were not published (that could be a warning sign right there) - so it could have been an awesome session - its just that given the information we had, we had to make a judgment call, and elected to ditch.
All in all, both Jim and I felt we had learned a lot, had generated a lot of good ideas we want to try out, and had a very positive experience. I'm hoping to maybe attend again next year.
If you walk into a conference session, and every seat has a vendor's flyer on the desk, do yourself a favor - just walk out. Frank Cohen from PushToTest never really talked about testing services in any practical way. Then again, he also didn't do a very good job of demostrating or selling his product, either. It was very much the worst of both worlds, and I actually turned on the WiFi antenna (which I had resisted a few times in some other talks) and checked my email, as well as did a little GoogleTalking with the people back at home. The worst part was, because the room was fairly full when we walked in, we sat in the front row. I felt a little bit bad - Frank seemed like a really nice guy, and in fairness, the tool he was pushing was open source. But he really didn't have much useful to tell me.
The moment we were all waiting for - Scott Ambler. Ok, that's an exaggeration. I've read his articles, listened to webcasts, read some of his books. I really was looking forward to seeing him in person.
His talk was entitled Agile Model Driven Development, but he covered a lot more along the way to that topic. His view of Agile is very pragmatic. He took a few swipes at the dogmatics, which was good, because I could see where he was coming from, and I often find myself on the highway to hell, um, I mean, the religious aspects of Agile. His exaggerated lack of respect for the general tone on some agile mailing lists definitely helped remind me of what it is we are trying to achieve. I think the reason why I wasn't offended was because he pretty much attacked all of the sacred cows in our industry - it was very South Park in that way... :)
I took a boatload of notes, so I'll summarize the highlights:
Change Management Process == Change Prevention Process
"Documentation is the worst form of communication you can use"
"I wish a few more people were skeptical in our industry"
Software development is more art than science, therefore upfront estimation is not realistic
"Noncoding architects are only useful for fetching people coffee"
"I will let the legacy systems in your organization speak to the success of traditionalists"
There was much more, but I think I am heading past attributing and into stealing his content, so I'll just leave it there. If you ever have the opportunity to see him speak, DO NOT miss it. I think when you look at those currently practicing the art of software development, he's one of the 3 most relevant people (at least to me) right now. [The others would be Joel Spolsky, who might be falling a little and Steve McConnell, who is always that much needed voice of reason]
The final Udi presentation of the conference.
Key takeaway - pubsub is generally the best way to build your services - think of everything as long-running. Instead of having your billing service ask your customer service for their current address every time it needs it, have the billing service cache customer data, and subscribe to the customer service to receive updates. The important thing to note here - this is NOT replication. In replication, there is no authoritative source of data - all sources are authoritative. In this scheme, the customer service is the system of record for customer data, and is responsible for it. If the billing service were to encounter a discrepency in customer data, it would ask the customer service for the current data, and use that. There is never a conflcit - the customer service is always right (sorry, that's almost a pun).
As you design your system, think about how it worked before it was automated. An order was faxed in, and handled by various people. Eventually, good would be shipped and a bill sent to the customer. Each of these steps in the workflow are just a process in the business, just now they are automated to improve efficiency (hopefully). Services are not APIs in the RPC style of thinking - they are different parts of the business, and have their own responsibilites. They don't care about what happened before in the workflow (beyond what concerns them) and they don't care what happens after them. When they finish their work, they post events to whomever is subscribed, and let the next processes figure out what to do.
Once again, we went to a presentation by - Intentions & Interfaces - Making Patterns Concrete. We would also attend his other presentation, which was immediately after this one, which of course must make us Udi's groupies... :)
Udi is a very dynamic speaker. He gives the impression that he really knows what he's talking about, and not only that, he has done it. For this presentation, I was so caught up in what he was talking about, and how it would solve problems I have to solve RIGHT NOW, I didn't take especially good notes. So, I'd recommend checking out the link to his slides above for the details, but basically, the premise was to build interfaces for all of the different cases where you would need an object, instead of having a large class with a lot of different methods. If you have a customer object, and sometimes you want all of the orders for that customer (but most of the time you don't), you have two methods (or as someone in the room suggested - one method with a boolean - I've done that as well). Obviously, over time, when you take into account all of the scenarios, you can end up with a lot of methods and a very large class.
The bigger problem, of course, is that these methods are only loosely related (they pertain to the same object, but they don't have the same purpose - a clear violation of the single concern principle. By creating interfaces, and then creating classes for those interfaces, you can pull that functionality out into different classes, and seperate the concerns. It also reduces your coupling - the customer class doesn't have to know about the orderdetails class in order to work with its child orders.
Its definitely a lot of common sense stuff in a way, but I probably never would have thought of it that way. I need to throw together my own reference application to fully assimilate what he talked about - I don't think I'm doing it justice in this post. It was good stuff - got me thinking, anyway...
Randy Miller gave a ridiculously short (under 45 minutes) presentation on Composite Architecture. I went in thinking he would be talking about how one hooks up different technologies into one system, which is a problem we face at McKesson Automation - our product lines are based on various technologies, and our customers like them to work together.
I completely forgot my brainwashing back in my Microsoft Merit Badge days - Composite Applications used to Microsoft-speak for cobbling together an application from various Office applications and enough VB and VBA to make them stick. Randy works for Microsoft. So, it should come as no surprise that Composite Architecture is the updated version of that vision, where instead of hooking together Office products, we're hooking together server products such as SharePoint, BizTalk, Excel Server, etc. Certainly a good solution in a lot of cases, but he didn't really dive into the details very much, or at all for that matter.
The only useful thing he mentioned was adding a "Productivity Tier" between your business logic and presentation logic, to allow for non-human systems to interface with your application easily. Definitely a good idea, if you have the need to take order via a web service, or reservations via a message queue, etc. The Productivity Tier essentially reformats your data into a form that your business tier can use, and that external applications can make use of going the other direction. Of course, its kind of a logical, common sense thing to do, but it is good to mention, I suppose. I just would have rather gone to a different presentation (Rob Daigneau had a presentation, Messaging-Oriented Design Patterns for SOAP Services, that might have been better at the same time).
The first talk I attended on Wednesday was Chris Armstrong's presentation on Agile Enterprise Architecture. I'm going to have to be honest - he started with a 10 minute rehashing of the Agile Manifesto, in his own thinking, and for me it went down hill from there. He is one of those delusional folks that thinks RUP can be Agile (anything with distinct phases for the different activities (requirements/design/coding/testing) is NOT agile). I just couldn't get over the fundamental difference there, and his constant reference to such BIG PROCESS things like TOGAF and IEEE processes didn't help. For an old-school architect, what he was saying was indeed agile, but it wasn't the kind of agile I was expecting. My friend and coworker Jim Patula (no blog) found him to be a half-way decent, so it could just be me.
There were two useful points he made, that I agree with completely - Agile is about minimizing rework (probably more than just that - what about other wastes, but a good thing to keep in mind all the same), and "At the end of the day, Microsoft Project doesn't work".
Rob Daigneau's presentation on Introducing Domain Services was a pretty decently balanced between "astronaut-y" architecture and practical advice. He was a fairly engaging speaker. Probably the biggest takeaway I got from his talk was: "If you want to do anything useful in software, coupling must exist". He spent a good deal of time discussing this paradox - we want to have loosly coupled everything, but at the end of the day, if our code is going to do anything, it has to be coupled to other code in some way. So, in the end, its a matter of determining what type of coupling is best for a given scenario - different systems will have different needs.
He described the types of coupling as:
Data Structure
Interface
Functional
Temporal
Location
Larry Constantine talked about Interaction Design for Non-Designers. It was a very 101 level presentation, and there were a lot of, well, yeah, of course moments, but overall, I felt it was worthwhile.
Some of the highlights:
Don't punish your user - his example - a survey web page with dropdowns for yes/no, instead of radio buttons. It takes twice as many clicks to get through it
"Every time there is an 'instruction manual' for a control, you should rethink it"
The status area at the bottom of a lot of screens is generally never looked at
Users tend to blame themselves when something doesn't work, instead of blaming the developer (who is almost always the one who deserves the blame)
Pramod Sadalage presented on Agile Database Development. I'm slightly familiar with his work, as I have read Scott Ambler's Agile DBA book, on which I believe Pramod contributed. At the very least, the two have also written Database Refactoring together, so I pretty much knew about the topic. I have been taking notes in OneNote all through the conference, and I created a page on which I'm listing things I need to do when I get back to the office (things to research more, or things to talk to someone about - mostly things we should consider re-evaluating). My list of things to re-evaluate grew greatly during this talk. There are lots of little things we could do better database-wise, with regards to our adoption of Scrum.
Our DBA's have a database build script, but its hardly automated, and it depends upon some crazy Access application to run it (yes, you read that right - an Access application to build a SQL Server database). The database team also uses a crazy versioning scheme in SoresSafe. But more importantly, we don't really include them like we should, and talk to them about what we are trying to achieve, and it causes conflict.
The coolest thing Pramod demonstrated was dbdeploy. It doesn't really do anything all that crazy, and yet what it does is pure genius. It will run a series of scripts to bring your database up to date, and also allow you to roll back to an older version. You have to write the scripts, but it manages the process for you, and makes it real easy to get an up to date database for you development or QA environment, or even production (although if your DBAs are squeamish, it will generate the script necessary to go from one version to another). Its nothing complicated, and yet incredibly elegant.
First presentation today was about code metrics. Sure, he threw the word agile in the title, and it had some relevance, but at the end of the day, the talk was about metrics. The presenter was Neal Ford, and he was pretty good. I had mixed expectations coming into this talk - I wasn't sure if it was going to be a lot of crazy math and theories. It turned out to be a really good look at some meaningful metrics, and more evidence against KLOC.
Some interesting points:
We aren't engineers, and we probably won't ever be - software engineering is a myth.
Automated metrics gathering is the best way to go - and even better would be to track how they change over time
Java has a lot of really good tools in this space, .Net has some catching up to do (although we do have FxCop, NDepend, and SourceMonitor (which actually does most languages), but they have Panopticode, which totally rocks)
Some useful metrics:
Unit Test Code Coverage (Branch coverage is most important)
Cyclomatic Complexity
Npath complexity - an improved Cyclomatic - it counts actual paths through the code
Chidamber & Kemerer object-oriented metrics suite
Crap Complexity (crap4j - there are rumors of a .Net version)
My "grand-boss" has been on a hunt for metrics, and KLOC and Feature Points have come up a lot. I'm hoping maybe with this newfound knowledge, I can help steer him away from those outdated metrics... Wish me luck!
The final presentation of the day yesterday was a Birds of a Feather group discussion about what was important to make an agile project succeed. It was lead by Chris Sims, who did an excellent job facilitating. I don't know that I necessarily learned anything, about agile, but I did learn another way to give a retrospective, which in many ways was what Chris led. Going around the room and giving everyone a turn to mention something (after having them write up a list) seems like it would be very empowering to those who often don't speak up - I'm definitely going to give it a try the next time I facilitate a retrospective.
If you're keeping track of fads, Scrum and 2 week iterations are the most popular way for people to do agile, at least according to the show of hands...
I attended Mike Rosen's (doesn't appear to have a blog, and the domain for the email address he gave doesn't appear to have a web site, but you can try searching for him by name and his company, Wilton Consulting Group, which will give you a ton of hits on presentations he's given) talk on Designing Service-Oriented Applications. It didn't quite meet my expectations. It was very high level, architecture-astronaut-y. Mike admitted many times to being a UML guy, and I got the distinct impression he hasn't written any code in years. Guys like him are the reason why I resist the title architect. If you don't have that same bias, it probably would have been a pretty good presentation. Mike's presentation skills are decent, and he does have a lot of experience. I was just hoping for something a little more practical.
The first presentation I attended was an excellent presentation about building distributed systems given by Udi Dahan. He talked a little about his open source enterprise service bus (ESB) nServiceBus. He had a boatload of material, and ran through it all - it was a little bit too much for the time, and yet he managed to do a good job of not crushing us with it all.
Some of the more interesting notes I took:
You might want to consider the security of the data in your local caches
Instead of just logging an exception and moving on, route messages that couldn't be processed to an error/exception queue, so that you can reprocess them later - you don't want to just drop that $5M order.
I'm paraphrasing here, but the thing Udi said that really hits home most for me: If you want to have control over anything, don't allow multiple applications to share a database
If you have the opportunity to see Udi speak, I highly recommend it. I'm hoping to get a chance to play around with nServiceBus - maybe I'll have somethign to write about that in the coming weeks.
This week, I'm in downtown Chicago, attending Dr. Dobb's Architecture & Design World. So far, its been well worth it, although as a suburbanite who has never really had to deal with city life, I am somewhat shocked by how damn expensive a 10 minute cab ride is... :)
I'll try and give a brief recap of each session I attend over the next series of posts.
Everything actually went pretty well. Sure, it wasn't without it's glitches, but I think everyone had a pretty good time and learned a lot. At least that's what people told us... :)
My presentation seemed to go over pretty well - I got a few compliments afterwards (and applause), but in my glimpses of evaluations as they were turned in, there were a couple of 3's and 4's (out of 5), so I know I have some work to do. Still I'm pretty happy with my first presentation in front of a large crowd (BADNUG usually has less than a dozen, and back in my MCT days my largest class was 16 - 60 or so people is definitely more than I've spoken to before).
We had 200 people signed up, and including walk-ins, ended up with probably 160-170 people in attendance, so I'd say turn out was pretty good. Many talks had people lined up along the back wall - each room had seating for 50, and we had three rooms going. We'll definitely need more speakers for the next code camp - I can only imagine that there will be a few more people attending.
One speaking tip - coffee is not an effective means of curing a dry mouth. Sure, it helps for a minute, but then it only makes it worse. My presentation was the first one in Room 1, so I hadn't yet finished my morning coffee, and just used that instead of getting a bottle of water. Now I know.
From previous experience, though, tea can work, especially if you are fighting an illness...
One other tip - try to break your code lines as much as possible (probably won't help those using VB for their demos, though) and crank up the font size. And then take a walk to the back of the room to make sure that the text is readable. Works especially well if your eyes are little worse than average, like mine.
So, if you're still reading, let me be the first to start the rumor that we are planning to have another Code Camp in the fall, probably late September or early October.
Details here - if you haven't signed up yet - go do it now - I'll wait.
I'm giving a presentation on some work I've done with Attributes, Reflection, and Property Grids to manage lists (the typical lists you have in your database to populate dropdowns). Some of the lists I'm managing have more than just the typical ID, Name, and Description - for example, one of them is for marking priorities, and in addition to those fields I have Late Time and Display Color.
Instead of building a new list view screen, and a detail screen, for each different kind of item, I utilized a base class for the typical case, and extended it with additional properties. I used attributes to map the properites to the database. And the whole thing is hosted in one form with a dropdown to pick the list to manage, then a listview of the items, and a property grid to allow you to manage each item. Streamlines the whole process. I'll cover how I put it all together, as well as quick overviews of Attributes, Reflection, and Property Grids for those who haven't used them before.
Hope to see you there!
I knew I had read about it somewhere. I did a search to confirm after I was reviewing some code from a more junior developer, and it occurred to me that there is a cooking concept is very applicable to software development, probably even more so than all of the construction metaphors.
Mise en place (often translated as meaning "working clean", or perhaps I'm just confused and they are actually different but related concepts) is the idea that everything has its place, and you should always try to keep everything in its place when you're not using it.
Its the little things that make our code readable by others, and easy to change when we need to fix a bug or add a feature. Sure, refactoring is a part of it, but it is something that occurs even before you finish a method. Things like putting the statement on a separate line from the "if", and enclosing in braces, even if it is only one statement, so that the next guy (probably you) doesn't have to figure out exactly whet you meant to do - it is obvious.
Where it actually came up - he had commented out large chunks of code. We use source control - this kind of "source control" isn't necessary. Make sure that they changes were checked in to source control if they are important, then rip them out and leave the code clean for the next check-in.
Bottom line - if you always keep your code clean, people will thank you for it - the life you save may be your own!
...and I'm not sure I did very well. The test has a lot of questions about obscure stuff - and definitely assumes you do infrastructure, WinForms, AND WebForms. At least there wasn't anything about Culture and Globalization (two very big topics on the last round) - does anybody even do any of that?
A fair number of questions about threading, especially the BackgroundWorker. Quite a few about Master pages and Web Parts (which I haven't even played with yet - I think that gamble didn't pay off... :)) Click Once also figured heavily, as did security, both Identity/Role and Code Access Security.
I remember some questions about the new encryption classes, as well.
Several of the questions were well structured such that if you didn't know the exact details, but were familar with the concepts, you could manage to narrow it down to what was probably the right answer.
But therein lies the problem - I was hoping to see a test that probed you as much about your thinking as it did about your understanding of Microsoft .Net trivia, and that still is not the case. The process is still very much cram and rote, which doesn't do anybody any favors.
But, I'm sure I'll keep on the wagon because I'm [1] a glutton for punishment, and [b] a certification addict.
I'm taking 70-554 in two weeks - at least I have some idea what to expect.
Not that I physically went anywhere, but I seem to have fallen off of the wagon. I'm going to try and post at least once a week, and I'm hoping it might even be every other day... :)
What have I been up to?
Well, I:
- Did a presentation of NHibernate for BADNUG.
- Managed to make it through requirements, architecture, and design for the project I'm the technical lead on (and I've even managed to keep the BDUF/Waterfall to in check, which hasn't been easy - some of the other people on the project seem to like IBM/Rational).
- Set up a daily build using Visual Build Pro. (There may be a review - short review - its a hell of a lot easier than NAnt)
- Explore the wonders of big company procurement processes.
- Did a little web development on the side (no, you can't see it).
- Signed up for a couple MS upgrade exams - I'm still on the certification treadmill.
- Read a bunch of books (hopefully there are some reviews coming).
- Managed to still find time to play with my kids.
I'm now into the coding phase of the project, and in addition to being tech lead, I actually get to write some code. And manage the build. And be the DBA. It may look like I'm complaining, but I'm not - I'm having a blast, so far. Ask me again when the too-tight deadline comes up... :)
Yes, finally, things are starting to come together for a real, live, Pittsburgh Code Camp. It will be April 8, at the University of Pittsburgh CS department. Check out the site for all of the details - note that Penn Staters are still welcome (at least, I hope they are, since I am one).
I'll be speaking (need to get the actual abstract together) on Object-Relation Mapping (ORM). I did a presentation on NHibernate for BADNUG back in January, so I'm going to build on that. Even if you think I suck, you should still come - there will be lots of other speakers there - we're planning 3 rooms of talks (kind of like a 3 ring circus).
Don't forget to sign up - See you there!
About two weeks ago now, my brand spanking new Dell arrived - I don't care what the other bloggers say, I still love Dell. Its really my first full-blown, kick ass system (past machines have been a compromise between speed and budget - well, I guess my 8250 was decent in its day, and its still great for the wife and kids). No excuses now.
I ended up with a Dimension 9100, with a dual-core 3.0, 4 GB RAM, and a pair of 160 GB 7200rpm SATA drives (RAID 0). I haven't really unleashed it yet, but so far it's screamed through installing all those tools you have to have... :)
The case is actually almost pretty (of course, I have little sense of asthetics, so your opinion probably differs) - its a silvery white, and it has a slightly different cooling system, which makes it relatively quiet.
After many trials and tribulations (and rumors, allegations, and backchannel discussions), the moment we (well, Rich and I, anyway) have long awaited has arrived - Pittsburgh Code Camp.
I need to find a topic, since Dave and Craig (of PghDotNet fame, but without a weblog) have been after me to speak (and I have to represent BADNUG!). Any suggestions greatly appreciated - I'm thinking Smart Client, since somebody seems to have forgotten that Microsoft has a database product line and neglected to put in a Data track. Dave (who's heading up the Architecture track) is begging for people to do Architecture, but I just don't think an unstructured hack like me can speak about such high falutin' things.
Ripping all of our CDs to the home computer was a major pain in the ass, but I have thoroughly enjoyed the results. It's nice having a jukebox with loads of music on it.
So, I was doing some work, and decided I was in the mood for some Led Zeppelin, which is odd, since I really don't listen to much classic rock anymore. The thing that struck me was how well much of it has aged (unlike the Beatles and the Stones). But the coolest part was rediscovering songs I'd forgotten about - Achilles Last Stand is an awesome track. I mean, The Ocean is still cool, but everybody knows that one, and it gets some airplay still (especially when the rappers sample it :)).
Then last night, I came across some PWEI. Why don't they make music like that anymore? I guess it will just take another decade - after all, 20 years later, we have The Killers channeling the ghost of Duran Duran (wait, they're not dead yet...).
So, the question is, am I old, or do they really not make much good music anymore? :) I know the answer, and it's that they don't play good music on the radio anymore, but they still make it...
I guess there was no real point to this post, except maybe this - go right now and dig deep into your music collection and listen to something you haven't heard in a while.
So, after what has to have been the longest negotiation process (9 months since the initial sales inquiry, 7 months since they seemed to be actually interested) for the work of 2 or 3 consultants (fortunately, I was only involved in a couple meetings of it), I am moving on to a new client. Actual end date here and start date there are not yet certain, but it is good to finally have it happen. Current client has been one of those - yeah, we need a consultant - and then you get there and find out that it's staff aug. Next client is a real project, with real requirements, and real deadlines. I am looking forward to it.
It's been forever since I posted - I'm sorry. Not that you probably care - I'm sure you've stopped reading me already. :)
Anyway, it's been an interesting near month since that last post. I've decided to change programs - RMU just added a Master's degree in Competitive Intelligence Systems (everybody else refers to this as BI, but whatever). So, I'm moving to that program, since it really captures my interests. As you may have been able to tell, I'm a developer who loves data.
The benefit to you, dear reader, is that you may find any posts I make about grad school to be more relevant. Or not, if you are reading me and interested in business, but I can't imagine why you'd be doing that (not being interested in business, seeing as I am interested in business as well - my undergraduate degree is in business - but instead why you'd be reading me as a source of that sort of information).
So, anyway, I'm going to blog more, honestly. I plan to talk about business intelligence (as well as some development stuff), with some database stuff and useless rants thrown in.
Seems that there is now a "port" of DotNetNuke to C#: SharpNuke.Net. Seems kind of silly, since you can write your own modules in any .Net language you desire, but I guess somebody had to do it. After all, what would we talk about if we couldn't trash each other's language choices? :)
Seems like maybe they may be more relevant to the real world - at least by the structure of the actual titles. We'll see if the content is more real-world oriented! Details here.
So, my dear old Dell Axim is obsolete (ok, maybe it was obsolete when I bought it :)). It's an X5 I purchased back in February of 2003, and it came with PocketPC 2002 as the OS. Dell briefly offered an upgrade to Windows Mobile 2003, but at the time, it just wasn't worth $30 to me - my X5 worked fine, and did what I needed it to do. I could write code for it using the lastest tools (VS 2003), and I was happy.
So, I finally got around to installing the beta of VS2005 at home, and I finally figured out what I was going to monkey with to see how the new features stacked up - time to do a little work on mobile development. Except, I just discovered - CF 2.0 doesn't run on PPC 2002.
And Dell, in their infinite wisdom, doesn't sell the upgrade CD anymore. Or offer any way to get it, like perhaps a download. And I just don't use my Axim enough to justify replacing it with another $400 PDA (at least, not until I'm ready for a new cell phone, and Verizon offers some decent products - not that I don't enjoy my Motorola v710, but...).
So, does anybody know of a place where I can buy the upgrade? I tried eBay, but that just didn't work.
I'm not having a good day - I keep making dumb mistakes. But, you, dear reader, can learn from one of them:
If you want to add stuff to your page (like those little badges and site meters), don't go looking through the code. Sure, you can do it that way, but it's not a simple matter of just hacking up the page layout for some random control using Visual Studio - you would have to actually change code. No, the way to do it is to go into the \Themes directory, find your theme, and edit the "homeTemplate.blogtemplate" file.
It makes perfect sense when you think about it - you're really just changing the layout, not the function. My old-school ASP roots are showing.
Now you know, and knowing is half the battle!
Seems like I'm dumping out a lot of code snippets today. Oh well, I had been planning to do it for a long time, so I guess it's about due. I have to say I have a minor code generation fetish, so hopefully some of my legions of readers will find these things useful...
Let me know here if you have any comments or questions about any of these things. I know none of them are terribly well polished - I'm hoping to clean some of them up and post updates. And maybe add some new ones...
The end of Dot Net Junkies, that is. It's very sad, the way they've let it go. First, the CodeBetter guys left. Then, some folks trickled over to GeeksWithBlogs. Along the way, some people went out on their own. Now, Dave Balzer has started DevAuthority, and I suspect anybody who remains at DNJ, and writes content worth watching, is probably gone, so I've updated my subscriptions in NewsGator and removed the main DNJ feed.
It's a shame, really. It was a REALLY GOOD community for a while, and then the servers got overburdened, and the software threw strange errors, and finally the comment spam got overwhelming. They kept promising to fix it, pretty much the same way I keep saying I'm going to watch what I eat. :) I'm sad to see it go...
...or not:
Give it a whirl, only takes a few minutes, and then you can convice yourself that you care about science!
The network admin at the client I am currently working for just pointed out that Windows 2000 is at the end of it's mainstream life. I googled and discovered this document, listing EOL for all MS products (bounce around the tabs for things other than OSes). Windows 2000 enters the "Extended Support" phase begining of next month (i.e. in a week).
Security fixes will still be available, but other than that, you'll have to pay for support.
The interesting thing is that Windows XP's mainstream support ends Dec. 31, 2006 - before Longhorn is supposed to ship, I believe. Regardless, even if Longhorn does by some miracle ship before then, it won't even have begun to replace XP.
That's where the policy exception comes into play: the policy is that mainstream support lasts 5 years. OR, 2 years after the successor product is released. So, XP will be mainstream for a long time to come.
Just thought you might like a heads up - time to move off of 2000. Or not, if you don't need anything beyond security fixes (which is probably most of us). But, if you cared about security, you probably already left 2000... :)
After the last PghDotNet meeting, I asked out presenter, John McClelland (Microsoft Architecture Evangelist) what he knew about the new Architect certification program. He admitted that he is under a non-disclosure, so he couldn't give a lot of detail, but he did provide a little more information that I've seen in the "press".
While everyone is comparing it to a PhD program, John said its more like a Professional Engineer (PE) certification. I don't know a lot about the PE (except that my father-in-law is one). But, the general idea for the new cert is that you will have to be nominated, pay a fairly hefty fee (John wouldn't confirm or deny the rumor presented by another attendee that the fee is well into the 5 figure range), and present to a review board. Microsoft is expecting to have a VERY limited number of these (again, John would confirm or deny exact numbers, but did imply it would be in the couple thousand worldwide range, perhaps as small as 800). It will be a very intense process, and failure is very much an option.
The biggest news, though, is that there will be a "junior" level certification, that goes beyond the MCSD, but isn't quite the MArch. It will involve a test, which will presumably be more intense than the MCSD tests. It would be a good first step, especially considering that the new cert will require you to have EXTENSIVE architect experience.
John McClelland, our local Architect Evangelist, gave a presentation on Visual Studio Team System. Very cool stuff - I can't see any need to use MS Project anymore (not that there ever was - Project is not really meant for software development (or if it was, it doesn't do a good job)). It handles tracking work items and bugs.
No need for another source control - the new source control system is supposedly the same one MS uses internally, and if it can handle the source for Longhorn, it can probably handle your source code.
NUnit is replaced as well - there are unit testing tools as well as code coverage. The part I didn't know was that it also includes a web test/load testing tool, which seems pretty slick. I think this tool also can have its code coverage tracked. All of the results of these tests can be stored as artifacts in your repository, so you can keep track of how well everyone is testing.
All of this integrates with a Windows Sharepoint Services portal that is automatically generated for you. This allows "management" to view reports and such. Actually, you can customize reports to your hearts content - Reporting Services underlies the reporting.
I realize that most of this is not a revelation, but it was nice to see it actually work. I will say that it is a resource hog - I need to figure out how I'm going to get it all to work on my company-issued Inspiron 5100. Obviously I'll need more memory, and probably a USB or FireWire drive. John said that memory and more spindles help.
And now, its not expensive for small timers - the Team System Server comes free in an MSDN subscription (there is a five user limit on the free version). You still need to pick with "Role" you are going to play (Tester, Developer, or Architect). This install also includes a license for SQL Server, exclusively for Team System use. John acknowledged that this change was due to the feedback Microsoft received, mostly from bloggers. Interestingly enough, John doesn't have a weblog, which is a shame, since he knows a lot, is a good presenter, and is a really nice guy.
Doing a little ego-googling, I came across an item I hadn't seen before - an encyclopedia of TI/99-4a stuff. Ah, the memories. It has a reference to my first published game (althought the title is misspelled) "Galatic Emperors". It hasn't much - just a variation on the old Space Risk theme. I enjoyed it, and actually made a couple bucks - I think my royalties might have been well into the $20 range... :)
Still, not bad for a high school student (I graduated dear ol' Penn-Trafford in 1990) writing for a dying platform.
From the email announcement:
BADNUG will hold its next meeting on June 22 from 6-8 pm at BC3's Cranberry Campus (250 Executive Drive, behind Costco). In a break from previous formats, the Tool of the Month ("use one, don't be one") will be the entire presentation.
Rich Dudley will present on the basics of DotNetNuke. DotNetNuke is a free, open source portal system, which can be used to create complete websites with a great amount of functionality very quickly and cheaply.
DNN version 3.1 has just been released, and this presentation will cover installation, configuration, administration, skinning, module installation, etc. Version 3 has a number of new features, including several wizards that can configure a new site (such as a personal or club site) in minutes, which is extremely useful in a portal provider environment. Other new features include drag and drop positioning of modules, friendly URLs, new skins, and many new and improved modules.
With the release of DNN 3, the DotNetNuke Core Team has also begun several sub-projects. There has been much hope that DNN will be able to integrate with Community Server, but as of yet, little progress has been made. The DNN team has begun its own blogging and forums sub-project, which we'll also install and review. We'll also take a commercially available template and turn it into a DNN skin.
DNN 3 supports only SQL Server (MSDE, SS2K, SS2K5) out of the box, but Access, Oracle and MySQL providers are under development by third parties.
We'll be using the April CTP of Yukon for this demonstration.
Everyone who pre-registers will receive a solutions CD containing a number of resources, including the recent DotNetRocks episode on DNN.
If you have a functioning laptop (or, if you want to lug your desktop and monitor) and would like to perform the installation along with the presentation, feel free to do so. The required configuration you need to have working is:
1) Win2K Pro, Win 2K Server, WinXP Pro (must be pro), Win2K3 Server
2) IIS installed
3) Some flavor of SQL Server 200x, MSDE or Sql Server 2005 Express
To register, e-mail info@badnug.org. For additional information, visit www.badnug.org.
By way of DevHawk:
"The difference between a hallucination and a vision is how many other people can see it."
I like it - sounds about right.
Mike Gunderloy is editing a series of articles that promise to help us select tools and components. The idea is that he will produce guides in various categories that compare all of the available products, making it easier for us to pic |