Checking In Often
posted on 11/26/07 at 10:33:22 pm by Joel Ross
Dave Donaldson nails it again when he talks about checking in your changes as often as possible. I've seen people resist this because of a "that's not how I work" mentality, and when you work with Continuous Integration, that thought process doesn't work.
So how do you get developers past the "check files out all day" way? I find fear is a good motivator:
- You don't go home if the build is broken: Simple enough. If you check in bad code and it the build server doesn't like it, then you fix it before you leave for the day.
- Merging is your enemy! enable multiple checkouts in your source code repository. If you want developers to check in often and keep files checked out for the bare minimum amount of time, let them experience merging. Despite the fact that merging is usually a seamless process, it still strikes fear in developers hearts - at least enough to get them to check in often.
Seriously though, the main reason developers don't check in often is because they look at a feature and see that as their "unit of work" to check in all at once (or they look at a day as their unit of work). It's a learning process to realize that features can be broken down into smaller tasks that can be checked in. Dave states it pretty well.
It's really about small blocks of code that you know not only compiles on your machine but also on the build server. The code doesn't have to be functionally ready from a requirements perspective, but should do *something*
Once you realize this, it's much easier to check in often. On a typical development project, I check in every hour or so. Features aren't built in an hour (typically) but small tasks can be completed in that time, and it's advantageous to get them checked in as quickly as possible - if for no other reason than not having to merge!
Categories: Development
07-08 NFL Week 12 Picks
posted on 11/21/07 at 08:44:19 pm by Joel Ross
A short week to get your picks done! And since it's a short work week, it's a busy week there as well!
- Green Bay (-3) vs. Detroit (47 O/U): You have to love football on Thanksgiving. This'll be on in my house
- New York Jets* vs. Dallas (-14) (47.5 O/U)
- Indianapolis vs. Atlanta (-12) (41 O/U)
- Denver vs. Chicago (-2) (41 O/U)
- Buffalo vs. Jacksonville (-7.5) (35.5 O/U)
- New Orleans (-3) vs. Carolina (41 O/U)
- Oakland vs. Kansas City (-5.5) (34.5 O/U)
- Minnesota vs. New York Giants (-7) (40.5 O/U)
- Houston vs. Cleveland (-3) (51 O/U)
- Seattle (-3) vs. St. Louis (44.5 O/U)
- Tennessee (-2) vs. Cincinnati (47 O/U)
- Washington vs. Tampa Bay (-3) (38 O/U)
- San Francisco* vs. Arizona (-10.5) (37.5 O/U)
- Baltimore vs. San Diego (-9) (38.5 O/U)
- Philadelphia* vs. New England (-22) (50.5 O/U): This is the largest spread since the '70s!
- Miami* vs. Pittsburgh (-16) (41 O/U)
My Lock Solid picks for the week are Indianapolis (-625), Jacksonville (-350), New York Giants (-330), and San Diego (-450).
Check back next week to see how I did.
Categories: Football
07-08 NFL Week 11 Pick Review
posted on 11/21/07 at 07:36:39 pm by Joel Ross
Another pretty poor week, although I did make up a little ground with spread picks, so that's good! It's really, really tough to make any money on straight picks. I am over 60% right on the season, but yet, I'm down $150+. Ouch.
My "Lock Solid" picks for the week? Not so good. 2-2, after both Pittsburgh and Cincinnati lost. That caused a loss of $14.14. That makes me 30-14, but down $38.55. That's 68% correct, yet still losing money!
- Miami 7, Philadelphia 17 (-10) (40.5 O/U) [P: $1.90, S: $0.00, O/U: ($10.00), T: ($8.10)]
- Oakland 22, Minnesota 29 (-5.5) (35.5 O/U) [P: $4.00, S: $10.00, O/U: $9.09, T: $23.09]
- San Diego 17, Jacksonville 24 (-3) (40.5 O/U) [P: ($10.00), S: ($10.00), O/U: ($10.00), T: ($30.00)]
- Carolina 17, Green Bay 31 (-9.5) (37.5 O/U) [P: $2.22, S: $10.00, O/U: ($10.00), T: $2.22]
- New England 56 (-15.5), Buffalo 10 (46.5 O/U) [P: $0.63, S: $10.00, O/U: $9.09, T: $19.72]
- Kansas City* 10, Indianapolis 13 (-14.5) (44 O/U) [P: $0.77, S: $10.00, O/U: ($10.00), T: $0.77]
- New Orleans 10, Houston 23 (-1) (47.5 O/U) [P: $9.09, S: $10.00, O/U: $9.09, T: $28.18]
- Cleveland 33 (-3), Baltimore 30 (43.5 O/U) [P: ($10.00), S: $0.00, O/U: ($10.00), T: ($20.00)]: That field goal was unbelievable!
- Pittsburgh 16 (-9), New York Jets 19 (40 O/U) [P: ($10.00), S: ($10.00), O/U: ($10.00), T: ($30.00)]: What? The Jets beat Pittsburgh? Seriously?
- Washington 23, Dallas 28 (-10.5) (46.5 O/U) [P: $1.82, S: ($10.00), O/U: $9.09, T: $0.91]
- Tampa Bay 31 (-3), Atlanta 7 (35.5 O/U) [P: $5.71, S: $10.00, O/U: $9.09, T: $24.81]
- Arizona 35, Cincinnati 27 (-3) (48.5 O/U) [P: ($10.00), S: ($10.00), O/U: ($10.00), T: ($30.00)]
- New York Giants 16 (-3), Detroit 10 (49.5 O/U) [P: $6.67, S: $10.00, O/U: $9.09, T: $25.76]
- St. Louis 13 (-3), San Francisco 9 (40.5 O/U) [P: ($10.00), S: ($10.00), O/U: ($10.00), T: ($30.00)]
- Chicago 23, Seattle 30 (-6) (37.5 O/U) [P: $3.64, S: $10.00, O/U: ($10.00), T: $3.64]
- Tennessee 20, Denver 34 (-2) (38 O/U) [P: ($10.00), S: ($10.00), O/U: $9.09, T: ($10.91)]
Results Summary
- Picks (this week): 10 - 6 (62.50%) - Winnings: ($23.55)
- Picks (season): 97 - 63 (60.63%) - Winnings: ($156.43)
- Spread (this week): 8 - 6 (57.14%) - Winnings: $20.00
- Spread (season): 70 - 78 (47.30%) - Winnings: ($80.00)
- Over/Under (this week): 7 - 9 (43.75%) - Winnings: ($26.36)
- Over/Under (season): 75 - 81 (48.08%) - Winnings: ($128.18)
- Total Weekly Winnings: ($29.92)
- Total Overall Winnings: ($364.61)
My week 12 picks are coming soon!
Categories: Football
Shortening Your URLs
posted on 11/20/07 at 01:05:46 pm by Joel Ross
No matter what you think of Dave Winer, he is definitely an innovator and is constantly coming up with great ideas. His latest is a gem as well.
Every web app that produces long urls should provide a built-in url-shortening facility. The user interface would be similar to the one in Google Maps they call "Link To This Page." You click on it, and up pops a box containing an address you can use to point to the page.
He then goes on to show that if you go to http://www.amazon.com/wii, that will take you to Amazon's Wii page, which is actually a much, much longer URL.
From a technical standpoint, providing a shortened URL would be pretty simple - something you could add quickly. If you use the alphabet and numbers, just 4 characters gives you over 1.6 million links, and a 4 character string is fairly simple to remember.
This might have to be added to Tourneytopia this year. A short URL to your March Madness picks would make it a lot easier to share with your friends. And as I think about it, using your entry ID, something you already keep track of, as the shortened URL part, would make it even easier.
Categories: Develomatic, Development, Software
NuSoft Framework Road Map
posted on 11/20/07 at 09:52:52 am by Joel Ross
It seems like just about every other comment on the NuSoft Framework site is asking for a list of features we plan to offer in the future. We've had ideas of what we want to do, as well as taking in feedback, but we hadn't put it all together yet.
That is until last Friday. We met, laid the next version out, and put together a small road map that should get us through the next 6-9 months, as well as assigning who should do what. Honestly, I'm excited about some of the features that we've settled on.
NuSoft Framework 3.0
I've been planning to add validation (and did a prototype) since before 2.0 was released, so that was the main thing I wanted to add. Logging was highly requested, and something I wanted as well. The others are great features, as well. We're targeting the end of January for the release, but that date is not solid.
- Add Validation support
- Add Logging support
- Add database-based Paging with sorting support
- timestamp field support
- Add DeleteAll() & SetAllDeleted() methods to EntityList
- Enhance FindEntity() & FindEntities() methods to work more like Sorting methods work - by multiple properties
- Fix potential naming conflicts with composite foreign key relationships
- Add ability to refresh an entity from the database
NuSoft Framework 4.0
We have a very high level idea of what we want to add for 4.0, but it's definitely not fully baked at this point. So far, everything added to the framework has been based on past experiences and how we've done things - our best practices, if you will. LINQ and WCF are fairly new, and we haven't had a solid set of projects to base any best practices on yet. By then, we should have that experience, and we'll be able to better lay out our intentions as it gets closer.
- LINQ support
- WCF support
- Caching
- Nullable type support
- Deep loading of entities
- Add Copy constructors
- Add custom queries based on indexes on tables.
Future
The future is up in the air at this point. We expect that, at our current pace, Version 4 will be late Spring, and as we get closer to that, we'll determine what should be in there beyond that.
The above is a high level view, and I'm sure there will be bug fix versions (a la 2.0.1), and a few more features thrown in there based on feedback from our users. I'll also be posting about how I'm implementing some of these features (I'm slated to do validation as well as a couple of smaller ones), so I can get feedback on what I'm doing.
And of course, all of the current activity and more details on the above features are available at the CodePlex site.
Categories: RCM Technologies
Finally, Zune Utopia!
posted on 11/18/07 at 11:55:43 pm by Joel Ross
I think I've finally figured out how to deal with the Zune, and so far, my new way of doing things has been working out very nicely. For some background, I don't want to keep my podcast subscriptions in the Zune software - I want all of my subscriptions in one place, with read status synced with Newsgator Online. But I still wanted my podcasts on my Zune, and I wanted it to be easy - no manual work involved.
Well, I could do that with the original firmware, through the use of auto playlists, but they removed that in the latest firmware. When I first started, I didn't sync all of my music with the Zune, but I wanted all of my podcasts. Unfortunately, the Zune didn't see all of my podcasts as podcasts, so that didn't work out either.
So what I did was split my music into two folders. I have my main folder, and then I have a Zune folder, where I put all of my music I want synced. That's the folder I have the Zune software monitor, as well as the folder that all of my podcasts go into. Now, whenever I sync, everything is on there. It's not the best organization I've ever seen, but it's all on there, and I can find it, and when I've listened to a podcast and delete it, it automatically removes it from the Zune, which is what I wanted - getting podcasts on and off of my Zune is now no extra work for me.
Also, I think I've finally figured out what I need to do to easily get video on the Zune - from existing digital media, as well as DVDs. Once you figure it out, it's really quite easy, but when it takes 1/2 hour to "test" something, it takes a bit of time to get it right. I'll write that up separately, but the key is Windows Media Encoder 9.
Categories: Podcasting, Software
A Book About Continuous Integration!
posted on 11/17/07 at 10:59:04 pm by Joel Ross
While I was at GLSEC last week, there was a booth set up from Addison Wesley, who publishes technical content. They were set up right outside the room I was presenting in, and sitting on the table was a book I hadn't seen yet: Continuous Integration: Improving Software Quality and Reducing Risk. It's part of their signature series books, and while I haven't read it yet, just glancing through it, it looks pretty good. Actually, I used it as validation before my presentation that I was on the right track - the index was almost a walk-through of exactly what I was going to be showing!
Anyway, after I got home that I night, I started digging around to see if I could find more information about the author - Paul Duvall. I found it - he's the CTO of Stelligent Incorporated and blogs on Test Early, and has a lot of useful information about CI and Agile development in general.
The book also has it's own web site, which has a bunch of good resources and information, as well as allowing you to download Chapter 2, which is an introduction to CI.
Tags: Continuous Integration
Categories: Development
Is Your Software Really Checked In?
posted on 11/15/07 at 10:07:53 pm by Joel Ross
One of the things I stressed when I gave my CI talk last week was how important it is that when you set up your build process, that you make it self contained and under source control. One of my reasons was so that you can quickly get a build server up and running, but there's another reason for doing it that's probably even more important: Getting new developers ramped up. In the presentation, I used a fictitious example of how a developer typically gets ready to start on a new team:
- Get latest.
- It doesn't build.
- Find needed third party libraries.
- It doesn't build.
- Oops, they got version 3.1 when they need version 3.0.1. Get correct version of third party libraries.
- It doesn't build.
- Figure out the last few configurations to get it to work.
- It finally builds!
A couple of days later, they're finally able to build the code. It's not a real example, but it is typical. I picked two days because being able to go from 2 days to 10-15 minutes seemed like a huge difference to me - getting 16 hours of potential development time back can be a big deal. It's also about the amount of time to get a basic build process in place - you can justify integrating CI into your processes easily if it pays off after just one developer has to transition onto your project.
Anyway, I came across an example that's far more time than I accounted for. It's a series of emails going back and forth between a "newbie" and the project lead, who's too busy to really help the new guy out (sound familiar to anyone?). By the end, you find out the whole email exchange took two weeks - and the new developer wasn't able to start being productive until after that. Two weeks! That's a serious amount of lost productivity. And remember, this doesn't even include time to actually learn what the software is supposed to do.
If all of the necessary components had been under source control, it would have been a lot simpler:
- Get latest.
- Build software.
That's probably a little over simplified. You still need to document any configurations that are needed, but you could avoid the library version differences and database version differences. And you'd at least know exactly what libraries are part of the software.
So, again, is your software really checked in?
Categories: Development
07-08 Week 11 NFL Picks
posted on 11/14/07 at 06:08:53 pm by Joel Ross
I'm looking over the games this week, and really, I'm trying to find a game I'm excited to see. I'm sure I'll watch the Lions, and that should be a good game, but the rest just don't have any appeal to me.
What games interest you this week?
- Miami vs. Philadelphia (-10) (40.5 O/U)
- Oakland vs. Minnesota (-5.5) (35.5 O/U)
- San Diego vs. Jacksonville (-3) (40.5 O/U)
- Carolina vs. Green Bay (-9.5) (37.5 O/U)
- New England (-15.5) vs. Buffalo (46.5 O/U)
- Kansas City* vs. Indianapolis (-14.5) (44 O/U)
- New Orleans vs. Houston (-1) (47.5 O/U)
- Cleveland (-3) vs. Baltimore (43.5 O/U)
- Pittsburgh (-9) vs. New York Jets (40 O/U)
- Washington vs. Dallas (-10.5) (46.5 O/U)
- Tampa Bay (-3) vs. Atlanta (35.5 O/U)
- Arizona vs. Cincinnati (-3) (48.5 O/U)
- New York Giants (-3) vs. Detroit (49.5 O/U)
- St. Louis (-3) vs. San Francisco (40.5 O/U)
- Chicago vs. Seattle (-6) (37.5 O/U)
- Tennessee vs. Denver (-2) (38 O/U)
My "Lock Solid" picks for the week: Green Bay (-450), Pittsburgh (-450), Cincinnati (-170), and Seattle (-275). I'm starting to think that I'd be better if I stuck to lower money lines. It only takes one wrong pick to screw up a week when you pick the larger money lines. But even though I know that's what I need to do, when I look at the games that have a money line between -110 and -200, that'd be Jacksonville, Houston, New Orleans, Cleveland, Tampa Bay, Cincy (who I picked), New York Giants, St. Louis, and Denver. Those games are tough ones to pick, let alone lay a "Lock Solid" label on them. Of those nine teams, I actually picked five of them to lose!
Check back next week for my results.
Categories: Football
07-08 Week 10 NFL Picks Review
posted on 11/14/07 at 06:07:58 pm by Joel Ross
Another poor week for me. There's lots of negative numbers below. This season has been horrible for me! But at least the games have been good. I think I'm still picking based on last season's results. Green Bay, Detroit, and Arizona are decent teams, but Baltimore, Denver, Kansas City and Chicago aren't. Odd. It doesn't usually take me 10 weeks to adapt, but for some reason, this year has been harder.
FYI, at this point, by betting on the result, the spread and the over/under, I'd have placed $4,320 in bets. Based on my performance, I'd only have $3,985.30 of that back. By putting it into an index fund, I'd be sitting at $4,011.01, a difference of $25.71. It would actually be more, but I've taken into account a $10 per transaction fee. Of course, bookies don't charge transaction fees, so by investing in the fund, you're automatically down $10 a week.
My "Lock Solid" picks went 3-1 this week, after Indy couldn't quite pull off the comeback against the Chargers. As such, I ended up losing $2.23. For the season, I'm 28-12, which is pretty good, but I'm now down $24.41 for the year.
- Atlanta 20, Carolina 13 (-4) (36 O/U) [P: ($10.00), S: ($10.00), O/U: $9.09, T: ($10.91)]: Here's something I hadn't considered. Is Joey Harrington better than Mike Vick at quarterback? His completion percentage is over 10% higher, and while he can't run as well, that's not supposed to be the job of the quarterback, is it? Now, how do you explain that they're a worse team this year than last?
- Philadelphia 33, Washington 25 (-2.5) (38 O/U) [P: ($10.00), S: ($10.00), O/U: $9.09, T: ($10.91)]
- Minnesota 0, Green Bay 34 (-6) (40.5 O/U) [P: $3.85, S: $10.00, O/U: ($10.00), T: $3.85]
- Cleveland* 28, Pittsburgh 31 (-10.5) (47.5 O/U) [P: $2.11, S: $10.00, O/U: ($10.00), T: $2.11]
- Denver 27, Kansas City 11 (-3) (37.5 O/U) [P: ($10.00), S: ($10.00), O/U: $9.09, T: ($10.91)]
- Buffalo 13 (-3), Miami 10 (41 O/U) [P: $6.90, S: $0.00, O/U: $9.09, T: $15.99]
- Jacksonville 28, Tennessee 13 (-4) (35 O/U) [P: ($10.00), S: ($10.00), O/U: $9.09, T: ($10.91)]
- St. Louis* 37, New Orleans 29 (-13.5) (46 O/U) [P: ($10.00), S: $10.00, O/U: ($10.00), T: ($10.00)]
- Cincinnati 21, Baltimore 7 (-4) (44.5 O/U) [P: $18.50, S: $10.00, O/U: $9.09, T: $37.59]
- Dallas 31 (-1.5), New York Giants 20 (48.5 O/U) [P: ($10.00), S: ($10.00), O/U: ($10.00), T: ($30.00)]
- Chicago 17 (-3.5), Oakland 6 (38.5 O/U) [P: $5.00, S: $10.00, O/U: $9.09, T: $24.09]
- Detroit 21, Arizona 31 (0) (44.5 O/U) [P: ($10.00), S: ($10.00), O/U: ($10.00), T: ($30.00)]
- Indianapolis 21 (-3.5), San Diego 23 (44.5 O/U) [P: ($10.00), S: ($10.00), O/U: ($10.00), T: ($30.00)]: So Indy is now on a two game skid. When was the last time that happened? Oh yeah, when the lost three in a row to finish 2005, then got bounced from the playoffs shortly afterwards. Hopefully for them, this early season "slump" will correct itself before the playoffs hit. On the other side, San Diego started off pretty rough, but a win like this, that should help their confidence quite a bit.
- San Francisco 0, Seattle 24 (-11) (39.5 O/U) [P: $1.82, S: $10.00, O/U: ($10.00), T: $1.82]
Results Summary
- Picks (this week): 6 - 8 (42.86%) - Winnings: ($41.83)
- Picks (season): 87 - 57 (60.42%) - Winnings: ($132.88)
- Spread (this week): 6 - 7 (46.15%) - Winnings: ($10.00)
- Spread (season): 62 - 72 (46.27%) - Winnings: ($100.00)
- Over/Under (this week): 7 - 7 (50.00%) - Winnings: ($6.36)
- Over/Under (season): 68 - 72 (48.57%) - Winnings: ($101.82)
- Total Weekly Winnings: ($58.20)
- Total Overall Winnings: ($334.70)
Check back later for next week's picks.
Categories: Football